Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вектор в списке 
V
    Опции темы
gordmiand
Дата 11.8.2012, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



Код

typedef QMultiMap<unsigned short, void*> MMap;
MMap objMMap;

QVector <A1> objVector;

for (int i=0; i<5; i++)
{
A1 objA1; // объект некоего класса A1
//Заполнение objA1 разными значениями;
objVector.append(objA1);
}

objMMap.insert(0x10, (void*)& objVector );
objMMap.insert(0x14, (void*)&objA2); // objA2 - объект некоего класса A2
objMMap.insert(0x19, (void*)&objA3); // objA2 - объект некоего класса A3 

 
emit sig1(objMMap);

//connect sig1 и slot1
// objVector.clear();

void Klass2::slot1(MMap MyMap)
{
MyMap.values(0x10); вернет список значений  всех 0x10-ключей (этот список будет из одного элемента - вектора с элементами типа A1)
А как мне сосчитать (допустим в локальный же объект (или указатель) класса A1) содержимое, например, 2-го элемента (объекта класса А1) вектора (то есть как правильно обратиться к заданному элементу вектора, который (т.е. вектор) является элементом списка)?
}



Это сообщение отредактировал(а) gordmiand - 11.8.2012, 00:13
PM MAIL   Вверх
gordmiand
Дата 13.8.2012, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



...уже всякие варианты перепробовал...ну подскажите пож-та как правильно достать значение какого-либо элемента вектора, который сам является элементом списка?
PM MAIL   Вверх
borisbn
Дата 14.8.2012, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



QMultiMap::values() возвращает QList значений. Чтобы получить все значения по-очереди делаешь:
Код
QList< void* > values_for_0x10 = objMMap.values( 0x10 );
for ( int i = 0; i < values_for_0x10.size(); i++ ) {
    void * p = values_for_0x10.at( i );
    // дальше делаешь с p что хочешь
}

Как говорится в известном анекдоте, но есть один нюанс...
Что ты будешь делать с void * ? Как узнаешь, что это был за указатель ?
Вообще очень, очень и очень плохой метод - преобразовывать типизированные указатели к void *


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
bsa
Дата 15.8.2012, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



Цитата(borisbn @  14.8.2012,  09:32 Найти цитируемый пост)
Вообще очень, очень и очень плохой метод - преобразовывать типизированные указатели к void * 

Уж лучше тогда для всех классов сделать одного общего предка с виртуальным пустым деструктором, а потом через dynamic_cast кастить указатели до потомков. Это значительно безопасней.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0430 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.