Создал QMap<QVariant, struct MY_STRUCT> map;
Пытаюсь в него засунуть пару <ключ, значение>:
MD_ATTR attr;
attr.name = q_attrs->value(r_attrs.indexOf("attr")); //это значение из QsqlQuery, оно типом QVariant, тут без ошибок
m_metadata->attrs.insert(attr.name,attr); //а вот на эту строчку ругается !!!
Текст ругательств:
../../../../programs/qtsdk-2010.05/qt/include/QtCore/qmap.h: In function ‘bool qMapLessThanKey(const Key&, const Key&) [with Key = QVariant]’:
../../../../programs/qtsdk-2010.05/qt/include/QtCore/qmap.h:781:9: instantiated from ‘QMapData::Node* QMap<Key, T>::mutableFindNode(QMapData::Node**, const Key&) const [with Key = QVariant, T = CMetadataManager::_MD_ATTR]’
../../../../programs/qtsdk-2010.05/qt/include/QtCore/qmap.h:561:56: instantiated from ‘QMap<Key, T>::iterator QMap<Key, T>::insert(const Key&, const T&) [with Key = QVariant, T = CMetadataManager::_MD_ATTR]’
cmetadatamanager.cpp:121:48: instantiated from here
Объясните, плз. Можно ли сделать то, что мне нужно (иметь пару ключ-значение моих типов) ?
Что не так?
QVariant не может быть ключом для map
Дословно, компилер тебе сказал, чтоб быть ключом в мапе, нужен оператор меньше, которого для типа QVariant естественно нет...
Судя, навскидку, по твоему коду, можно использовать QString в качестве ключа
вопрос навскидку.
почему QVariant не может быть ключом для QMap? о_О
там же нет прямой зависимости...
bvn13,
ещё раз.
у QVariant нет bool operator<() необходимого для ключей QMap.
Если сильно нужно, можно
1) унаследоваться от QVariant
2) или инкапсулировать QVariant
и наследником пользоваться как ключом
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)