我boost::scoped_ptr在头文件中使用和前向声明:
//Bar.h
class Foo;
class Bar;
{
private:
boost::scoped_ptr<Foo> _foo;
};
我没有实现自己的析构函数,因为智能指针会完成这项工作。
我将此头文件包含在多个翻译单元中,但并非所有翻译单元都包含Foo定义。尝试编译时出现错误,scoped_ptr正在删除指向不完整类型的指针Foo。
如果我声明一个空的析构函数Bar.h并在Bar.cpp.
但是,如果析构函数是在头文件中实现的,我会遇到同样的错误。
所以问题是:隐式定义的方法在哪些翻译单元中使用?