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