dr_Begemot
Гость
|
|
« : Апрель 23, 2009, 16:46 » |
|
Как унаследовать класс от QObject? Видимо я что-то не сделал, т.к. компилятор пишет: error C2248: 'QObject::QObject' : cannot access private member declared in class 'QObject' вот класс: class MyClass : public QObject { Q_OBJECT public: MyClass(); //... };
|
|
|
Записан
|
|
|
|
alex12
Гость
|
|
« Ответ #1 : Апрель 23, 2009, 16:51 » |
|
QObject::QObject() закрытый, а QObject::QObject( QObject *parent=0 ) открытый конструктор. C++ (Qt) class MyClass : public QObject { Q_OBJECT public: MyClass( QObject *parent = 0 ); //... }; ... MyClass::MyClass( QObject *parent ) : QObject( parent ) { }
|
|
« Последнее редактирование: Апрель 23, 2009, 16:58 от alex12 »
|
Записан
|
|
|
|
lit-uriy
|
|
« Ответ #2 : Апрель 23, 2009, 20:31 » |
|
>>Видимо я что-то не сделал,
2 dr_Begemot, ты видимо в реализации конструктора пишешь так: MyClass::MyClass( ) : QObject() тогда можешь написать так: MyClass::MyClass( ) : QObject(0)
Объяснение тебе уже написали, и пример более правильный: >>QObject::QObject() закрытый
|
|
|
Записан
|
Юра.
|
|
|
dr_Begemot
Гость
|
|
« Ответ #3 : Апрель 24, 2009, 08:34 » |
|
Переделал так: class MyClass : public QObject { Q_OBJECT public: MyClass( QObject *parent = 0 ); //... };
в реализации: MyClass::MyClass(QObject *parent) : QObject(parent){ //... }
все равно та же ошибка
|
|
|
Записан
|
|
|
|
Steven_Orko
Гость
|
|
« Ответ #4 : Апрель 24, 2009, 08:58 » |
|
Тогда приведи содержимое файла полностью, ат акже и весь вывод ошибки (+-10 строк от той, что указывает на использование закрытого метода).
|
|
|
Записан
|
|
|
|
dr_Begemot
Гость
|
|
« Ответ #5 : Апрель 24, 2009, 09:14 » |
|
Тогда приведи содержимое файла полностью, ат акже и весь вывод ошибки (+-10 строк от той, что указывает на использование закрытого метода).
Решил проблему. Надо было добавить такую строчку в класс private: Q_DISABLE_COPY(MyClass)
|
|
|
Записан
|
|
|
|
alex12
Гость
|
|
« Ответ #6 : Апрель 24, 2009, 15:17 » |
|
Q_DISABLE_COPY(MyClass) Странно... У меня собрался просто так: ( MinGW Qt4.5.0 ) C++ (Qt) #ifndef __MY__ #define __MY__ #include <QtGui> class MyClass : public QObject { Q_OBJECT public: MyClass( QObject *parent = 0 ); }; #endif
C++ (Qt) #include <QtGui> #include "main.h" MyClass::MyClass( QObject *parent ) : QObject( parent ) { } int main( int argc, char **argv ) { MyClass myclass; }
|
|
|
Записан
|
|
|
|
ритт
Гость
|
|
« Ответ #7 : Апрель 26, 2009, 02:24 » |
|
а при чём тут Q_DISABLE_COPY(MyClass) ? и вопрос на засыпку - что делает и для чего предназначен макрос Q_DISABLE_COPY ?)
|
|
|
Записан
|
|
|
|
spbtellurian
Гость
|
|
« Ответ #8 : Июнь 08, 2009, 11:22 » |
|
что делает и для чего предназначен макрос Q_DISABLE_COPY ?) запрещает саздовать больше одного экземпляра. В наличии начиная с версии Qt 4.4.0
|
|
|
Записан
|
|
|
|
spirit
Гость
|
|
« Ответ #9 : Июнь 08, 2009, 11:25 » |
|
что делает и для чего предназначен макрос Q_DISABLE_COPY ?) запрещает саздовать больше одного экземпляра. В наличии начиная с версии Qt 4.4.0 это был риторический вопрос к автору
|
|
|
Записан
|
|
|
|
ритт
Гость
|
|
« Ответ #10 : Июнь 08, 2009, 11:26 » |
|
что делает и для чего предназначен макрос Q_DISABLE_COPY ?) запрещает саздовать больше одного экземпляра. В наличии начиная с версии Qt 4.4.0 запрещает сАздОвать больше одного экземпляра? каким же это образом? блокирует вызов new? %)
|
|
|
Записан
|
|
|
|
spirit
Гость
|
|
« Ответ #11 : Июнь 08, 2009, 11:33 » |
|
запрещает саздовать больше одного экземпляра. В наличии начиная с версии Qt 4.4.0
к тому же Q_DISABLE_COPY ( Class )
Disables the use of copy constructors and assignment operators for the given Class.
или код макроса глянь.
|
|
|
Записан
|
|
|
|
BRE
Гость
|
|
« Ответ #12 : Июнь 08, 2009, 11:34 » |
|
или код макроса глянь.
Даже в assistant'е все расписано с примерами.
|
|
|
Записан
|
|
|
|
Alex Custov
|
|
« Ответ #13 : Июнь 08, 2009, 11:46 » |
|
что делает и для чего предназначен макрос Q_DISABLE_COPY ?) запрещает саздовать больше одного экземпляра. В наличии начиная с версии Qt 4.4.0 это ты с умными синглетонами перепутал
|
|
|
Записан
|
|
|
|
ритт
Гость
|
|
« Ответ #14 : Июнь 08, 2009, 13:37 » |
|
кстати (но не в тему), возможно, в 4.6 появится QSingleton
|
|
|
Записан
|
|
|
|
|