私は単純な C++ の問題を抱えていますが、これを解決する方法がわかりません。
とにかく継承されていないAとBの2つのクラスがあります。AはClientクラス、BはClientのリストを格納するクラス(Aクラス)です。
B のみがクラス B をインスタンス化して破棄するようにしたいのですが、コードの他の部分はクラス A 内のメソッドを呼び出せるようにしたいと考えています。
最初に私は以下を持っていました:
class B {
public:
class A {
public:
void setX(int val);
int getX();
private:
int x;
A();
~A();
};
B()
~B()
....
};
これにより、B から A のコンストラクタ/デストラクタを呼び出すことができ、A のコンストラクタ/デストラクタを残りの部分から非公開にできますが、A で setX() と getX() を呼び出すと、B::A を呼び出さなければならないので面倒になりました。
他のクラスがAのメソッドを呼び出すことができるため、Aを独自のファイル(ネストされていない独自のクラス)に入れることを考えましたが、プライベートであるため、BはAのコンストラクター/デストラクタにアクセスできません。公開すると、誰でもクラス A のオブジェクトを作成できます。
これを行う最善の方法が何であるかわかりません。A が独自のクラスである場合、他のクラスが A からオブジェクトに対して setX() および getX() を呼び出すことができる一方で、コンストラクター/デストラクタを B のみが使用できるようにするにはどうすればよいですか?