Такой код: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 ведь никем не наследуется чтоб объявлять и виртуалить энтот деструктор...
|