我有两个班级说foo
和bar
。的构造函数foo
只private
允许bar
类实例化它。
// foo.h
class foo
{
friend class bar;
private:
foo()
{}
};
// bar.h
class bar
{
public:
bar()
{
foo* f = new foo();
}
};
我也在使用,boost::shared_ptr
但是为了简单起见,我在这里没有提到它
但是,当我尝试构建程序时出现错误
在 'typename boost::detail::sp_if_not_array::type boost::make_shared() [with T = bar; 类型名 boost::detail::sp_if_not_array::type = boost::shared_ptr]':| /home/../Projects/CodeBlocks/../bar.cpp|18|从这里需要| /home/../Projects/CodeBlocks/../foo.h|23|错误:'foo::foo()' 是私有的| ||=== 构建完成:1 个错误,2 个警告(0 分钟,5 秒)===|
是因为 bar.h 是先构建的吗?如果是这样,有关如何解决此问题的任何建议?