ここに私が持っているものがあります:
class A{
B* object;
const B& create_object(){
if(object == nullptr)
object = new B(this);
return *object;
}
}
さて、これが問題です。A 以外の方法で B を作成することを許可しないことになっています。B オブジェクトを作成できる唯一の方法は次のとおりです。
A a;
auto b1 = a.create_object();
オブジェクトの作成を許可しないことになっているので、B のコンストラクターをすべて非公開にし、A は B のフレンドであると言いました。
auto b1 = a.create_object();
コピーコンストラクターが呼び出されるとコンパイルされません。それを回避する方法はありますか?ポインターを返したくありません。オブジェクトである必要があります。