と言う2つのクラスが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; typename 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 が最初にビルドされるためですか?もしそうなら、これを修正する方法に関する提案はありますか?