Russian Qt Forum
Ноябрь 26, 2024, 02:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3 4   Вниз
  Печать  
Автор Тема: Не получается подружиться с QVector  (Прочитано 27327 раз)
dr_Begemot
Гость
« Ответ #15 : Июль 09, 2009, 17:01 »

Поставлю немного по-другому вопрос...
Нужно чтоб работало следующее:
Код:
class B : public QObject
{
  Q_OBJECT
  B(QObject *parent=0);
  //...
  //Сигналы, слоты, переменные, геттеры, сеттеры итп
  //...
};

class A
{
  //...
  B val1;
  B val1;
  //...
};

class CMain : public QObject
{
  Q_OBJECT
  CMain(QObject *parent=0);
  //...
  private:
  QVector<A> list;
}

Напишите плиз, что конкретно нужно дописать чтобы данный код компилился?
Спасибо.
Записан
Rcus
Гость
« Ответ #16 : Июль 09, 2009, 17:06 »

Честно говоря, когда игнорируют развернутые ответы дальнейшее желание писать пропадает, но на этот раз отвечую: "добавить * между A и >"
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #17 : Июль 09, 2009, 17:09 »

А чем компилишь то? У меня вот такой код прекрасно собрался:

Код
C++ (Qt)
class B : public QObject
{
 Q_OBJECT
public:
   B(QObject *parent=0)
       : QObject(parent)
   {}
 
   ~B() {}
};
 
class A
{
public:
   A() {}
   ~A() {}
 
private:
 B val1;
 B val2;
};
 
class CMain : public QObject
{
 Q_OBJECT
public:
     CMain(QObject *parent=0)
         : QObject(parent)
     {}
 
     ~CMain() {}
 
private:
 QVector<A> list;
};

Qt 4.5.2, MSVC 2008 + SP1. Под линуксом не проверял

ЗЫ: Аж интересно стало. У кого сейчас есть возможность скомпилить gcc?
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
dr_Begemot
Гость
« Ответ #18 : Июль 09, 2009, 17:14 »

А чем компилишь то? У меня вот такой код прекрасно собрался:

Код
C++ (Qt)
class B : public QObject
{
 Q_OBJECT
public:
   B(QObject *parent=0)
       : QObject(parent)
   {}
 
   ~B() {}
};
 
class A
{
public:
   A() {}
   ~A() {}
 
private:
 B val1;
 B val2;
};
 
class CMain : public QObject
{
 Q_OBJECT
public:
     CMain(QObject *parent=0)
         : QObject(parent)
     {}
 
     ~CMain() {}
 
private:
 QVector<A> list;
};

Qt 4.5.2, MSVC 2008 + SP1. Под линуксом не проверял

ЗЫ: Аж интересно стало. У кого сейчас есть возможность скомпилить gcc?

странно... Qt 4.4.3, msvc 2005... может дело в Qt...
вечером попробую дома на последней версии Qt собрать)
Записан
f-r-o-s-t
Гость
« Ответ #19 : Июль 09, 2009, 17:24 »

ЗЫ: Аж интересно стало. У кого сейчас есть возможность скомпилить gcc?

Скомпилировался.
Записан
dr_Begemot
Гость
« Ответ #20 : Июль 09, 2009, 17:35 »

А чем компилишь то? У меня вот такой код прекрасно собрался:

Код
C++ (Qt)
class B : public QObject
{
 Q_OBJECT
public:
   B(QObject *parent=0)
       : QObject(parent)
   {}
 
   ~B() {}
};
 
class A
{
public:
   A() {}
   ~A() {}
 
private:
 B val1;
 B val2;
};
 
class CMain : public QObject
{
 Q_OBJECT
public:
     CMain(QObject *parent=0)
         : QObject(parent)
     {}
 
     ~CMain() {}
 
private:
 QVector<A> list;
};

Qt 4.5.2, MSVC 2008 + SP1. Под линуксом не проверял

ЗЫ: Аж интересно стало. У кого сейчас есть возможность скомпилить gcc?

А вот попробуй такой код скомпилить:
Код:
class B : public QObject
{
  Q_OBJECT
public:
    B(QObject *parent=0)
        : QObject(parent)
    {}
 
    ~B() {}
};
 
class A
{
public:
    A() {}
    ~A() {}

B val1;
  B val2;
};
#include <QVector>
class CMain : public QObject
{
  Q_OBJECT
public:
      CMain(QObject *parent=0)
          : QObject(parent)
      {}

void test(){
if(!list.empty())
A val = list[0];
}
 
      ~CMain() {}
 
private:
  QVector<A> list;
};

скомпилится?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #21 : Июль 09, 2009, 17:39 »

Даже не буду пробовать - не скомпилится. Причина описана выше (впрочем как и решение).
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
dr_Begemot
Гость
« Ответ #22 : Июль 09, 2009, 17:43 »

Даже не буду пробовать - не скомпилится. Причина описана выше (впрочем как и решение).

Извиняюсь за тупость но я так и не понял решения... Грустный
вы имеете ввиду оператор присваивания? Как его написать для данного случая?

еще раз извиняюсь)
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #23 : Июль 09, 2009, 17:47 »

Код
C++ (Qt)
class CMain : public QObject
{
 Q_OBJECT
public:
     CMain(QObject *parent=0)
         : QObject(parent)
     {}
 
void test(){
if(!list.empty())
A *val = list[0];
}
 
     ~CMain() {}
 
private:
 QVector<A *> list;
};
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
f-r-o-s-t
Гость
« Ответ #24 : Июль 09, 2009, 17:49 »

Извиняюсь за тупость но я так и не понял решения... Грустный
вы имеете ввиду оператор присваивания? Как его написать для данного случая?

еще раз извиняюсь)

Честно говоря, когда игнорируют развернутые ответы дальнейшее желание писать пропадает, но на этот раз отвечую: "добавить * между A и >"
Записан
ритт
Гость
« Ответ #25 : Июль 09, 2009, 18:01 »

Авварон, низачОт )
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #26 : Июль 09, 2009, 18:33 »

я охотно верю, что они это еще и красиво обосновали... все равно тупо
А как можно сравнивать QObject, а как можно сравнивать его наследников?
Как можно сравнить QListView и QFtp? Кто больше? Улыбающийся
и чего тут нереального?
Получаешь указатель, приводишь к инту или к лонгу и сравниваешь.
правда толку мало - логичны только 2 операции равно и не равно.
остальные толку использовать нет(я не вижу по крайней мере).
фишка кстати полезная и используемая.
пс. на всякий случай я веду речь об экземплярах, но никак не о их содержании.
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
BRE
Гость
« Ответ #27 : Июль 09, 2009, 18:40 »

и чего тут нереального?
Получаешь указатель, приводишь к инту или к лонгу и сравниваешь.
правда толку мало - логичны только 2 операции равно и не равно.
Так это сравнение указателей, а не объектов.

На счет полезной фишки не понял?
Чем полезно сравнивать указатели на разные объекты?  Подмигивающий
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #28 : Июль 09, 2009, 19:00 »

и чего тут нереального?
Получаешь указатель, приводишь к инту или к лонгу и сравниваешь.
правда толку мало - логичны только 2 операции равно и не равно.
На счет полезной фишки не понял?
Чем полезно сравнивать указатели на разные объекты?  Подмигивающий
это от задачи во многом зависит. Гипотетически допустим есть массив/вектор однородных объектов, с которыми нужно выполнить однородное_действие, а с одним из них еще и дополнительное. этот один из них сидит в переменной.
Перебираем массив и выполняем однородное_действие а когда встречается "тот который" (естественно сравнивается указатель операцией равно) то выполняем и дополнительное_действие с ним.
Но это все теория.
ПС. А вообще кончай прикалываться Подмигивающий
« Последнее редактирование: Июль 09, 2009, 19:01 от panAlexey » Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
ритт
Гость
« Ответ #29 : Июль 09, 2009, 20:20 »

Так это сравнение указателей, а не объектов.
Записан
Страниц: 1 [2] 3 4   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.123 секунд. Запросов: 23.