KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have found it useful to use forward declaration of classes in combination with std::unique_ptr as in the code below. It compiles and works with GCC, but the whole thing seem kind of strange, and I wonder if this is standard behaviour (i.e., required by the standard)? Since B isn't a complete type when I declare the unique_ptr . A.hpp #include <memory> class B; class A { std::unique_ptr<B> myptr; // B::~B() can't be seen from here public: ~A(); }; A.cpp #include "B.hpp" //B.hpp has to be included, otherwise it doesn't work. A::~A() = default; // without this line, it won't compile // however, any destructor definition will do. I suspect this has to do with the destructor (and therefore the need to call the destructor of unique_ptr<B> ) is defined in a specific compilation unit (A.cpp).
Tags (comma-separated)
Save Edits
Cancel