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