| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt] свой класс в список QList |
| Автор: CompWorm 4.11.2009, 17:12 | ||||||
| итак, чтоб засунуть пользовательский класс в QList надо ему переопределить конструктор по умолчанию, конструктор копирования и оператор присваивания. в си++ я валенок и у меня это выглядит примерно так: house.h
и в основном классе я пытаюсь собрать QList: mainwindow.cpp
(гусары, сдерживаем смех!) ну и собственно на House_1.append(new house()); всё глохнет. про переопределения конструкторов я вычитал в книжке Qt 4 на примерах, и там конструктор по умолчанию описан немного по-другому:
но у меня компилятор ругается на такую форму записи. |
| Автор: SABROG 4.11.2009, 18:12 |
| http://doc.qt.nokia.com/latest/qtglobal.html#Q_DECLARE_TYPEINFO http://doc.qt.nokia.com/qq/qq19-containers.html http://doc.qt.nokia.com/latest/containers.html#assignable-data-types Потому, что точка с запятой там лишняя. |
| Автор: CompWorm 5.11.2009, 01:05 | ||||
| SABROG, УРА! для работоспособности этого примера надо сделать две вещи: 1) про точку с запятой ты прав))) надо либо убрать точку с запятой за фигурными скобками: house.h
соответственно при такой записи надо убрать описание конструктора из house.cpp либо напротив, если требуется много писать в конструкторе, удобнее описать его как у меня выше и не париться, код конструктора писать обычным способом в house.cpp. 2) объявлять список QList для своего класса надо так: mainwindow.cpp
со звёздочкой после названия класса - в этом заключается китайская хитрость, в отличие от зарезервированных классов. отсюда вопрос - что эта звёздочка значит? вопрос номер два про первую ссылку. я не понял, какой режим Q_DECLARE_TYPEINFO какие даёт приемущества? какая разница, movable мой список или массив в памяти или primitive? это как-то влияет на производительность или устойчивость к сбоям? я так понял, primitive позволяет съэкономить время на обработку конструктора и деструктора, если я их не использовал... |
| Автор: kuzulis 5.11.2009, 08:26 | ||
* - это значит, что QList будет хранить не сами объекты типа House, а указатели на объекты типа House |
| Автор: CompWorm 5.11.2009, 12:20 |
| kuzulis, это как раз понятно, но это не объясняет, почему тогда для зарезервированных типов правильно писать QList<date> Mydete; а не QList<date *> Mydate; ? в чем разница с пользовательским типом? понимаю, что |