QMap - как реализовать? |
Здравствуйте, гость ( Вход | Регистрация )
QMap - как реализовать? |
bvn13 |
14.12.2010, 18:20
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 11 Регистрация: 22.10.2010 Пользователь №: 2143 Спасибо сказали: 0 раз(а) Репутация: 0 |
Создал 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 Объясните, плз. Можно ли сделать то, что мне нужно (иметь пару ключ-значение моих типов) ? Что не так? |
|
|
igor_bogomolov |
14.12.2010, 18:40
Сообщение
#2
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
QVariant не может быть ключом для map
|
|
|
wiz29 |
14.12.2010, 18:54
Сообщение
#3
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
Дословно, компилер тебе сказал, чтоб быть ключом в мапе, нужен оператор меньше, которого для типа QVariant естественно нет...
Судя, навскидку, по твоему коду, можно использовать QString в качестве ключа Сообщение отредактировал wiz29 - 14.12.2010, 18:55 |
|
|
bvn13 |
14.12.2010, 19:32
Сообщение
#4
|
Студент Группа: Новичок Сообщений: 11 Регистрация: 22.10.2010 Пользователь №: 2143 Спасибо сказали: 0 раз(а) Репутация: 0 |
вопрос навскидку.
почему QVariant не может быть ключом для QMap? о_О там же нет прямой зависимости... |
|
|
kwisp |
14.12.2010, 19:46
Сообщение
#5
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
bvn13,
ещё раз. у QVariant нет bool operator<() необходимого для ключей QMap. Цитата The key type of a QMap must provide operator<() specifying a total order.
|
|
|
Гость_Гость_* |
14.12.2010, 19:53
Сообщение
#6
|
Гости |
|
|
|
SABROG |
14.12.2010, 20:00
Сообщение
#7
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
|
|
|
Алексей1153 |
14.12.2010, 22:05
Сообщение
#8
|
фрилансер Группа: Участник Сообщений: 2939 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Если сильно нужно, можно
1) унаследоваться от QVariant 2) или инкапсулировать QVariant и наследником пользоваться как ключом |
|
|
Текстовая версия | Сейчас: 24.4.2024, 14:11 |