Tag: forward declaration

前向声明与unique_ptr?

我发现使用类的前向声明与std::unique_ptr结合使用是很有用的,如下面的代码所示。 它编译和GCC工作,但整个事情似乎有点奇怪,我不知道这是标准的行为(即标准所要求的)? 因为当我声明unique_ptr时B不是一个完整的types。 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 definiton will do. 我怀疑这与析构函数有关(因此需要调用unique_ptr<B>的析构函数)是在特定的编译单元(A.cpp)中定义的。