Форум вопросов и ответов

Форум вопросов и ответов (https://www.otvetnemail.ru/)
-   Новый архив 3 (https://www.otvetnemail.ru/novyj-arhiv-3-813/)
-   -   QScopedPointer forward declaration (https://www.otvetnemail.ru/novyj-arhiv-3-813/qscopedpointer-forward-declaration-255333/)

Guest 28.09.2011 15:07

QScopedPointer forward declaration
 
Такой код:myclass.h:КодC++ (Qt)#ifndef MYCLASS_H#define MYCLASS_H#include class MyClass2;class MyClass{public: MyClass(); ~MyClass(); QScopedPointer _ptr;};#endif // MYCLASS_Hmyclass.cpp:КодC++ (Qt)#include "myclass.h"#include "myclass2.h"MyClass::MyClass(){ this->_ptr.reset(new MyClass2);}MyClass::~MyClass() { }myclass2.h:КодC++ (Qt)#ifndef MYCLASS2_H#define MYCLASS2_H#include "myclass.h"class MyClass2{public: MyClass2() { }; ~MyClass2() { };};#endif // MYCLASS2_Hmain.cpp:КодC++ (Qt)#include "myclass.h"int main(int argc, char *argv[]){ MyClass obj;}Вопрос в том, зачем для MyClass'а, в котором мембером является QScopedPointer, при операции forward declaration необходимо обязательно объявлять деструктор, может кто-то выяснил это? Без деструктора бооольшой ерор. Думал может по умолчанию деструктор идёт как virtual (в доке по QScopedPointer такой какбэ запрещается), но если с ним, то всё ок. Не люблю такой подход - объявлять их пустыми, класс MyClass ведь никем не наследуется чтоб объявлять и виртуалить энтот деструктор...


Часовой пояс GMT, время: 12:13.


© www.otvetnemail.ru - Форум вопросов и ответов.