私のクラスのファクトリ以外のクラスの型を構築することを避けたい。私はそのクラスをパブリック・インターフェースにする必要がありますが、その作成をその工場だけに制限したいと考えています。それ、どうやったら出来るの?1つのクラスのコンストラクタの呼び出しを、そのファクトリクラスのみに制限するにはどうすればよいですか?
クラスCar
と工場CarFactory
としましょう。ここでfriend
を使用して工場出荷時にすべてのプライベートメンバーを公開することなくこれを行う方法の私の最初のアイデアは、次のとおりです。
class Car {
private:
Car();
Car(Car& ref);
friend class CarFactory;
};
class CarFactory {
public:
Car * makeCar();
};
私は、Javaのための関連する質問が見つかりました:How do I make a constructor available to only the factory class?
あるとして上記のコードは動作します。明確にするために、コンストラクタだけを工場と共有する方法があるのか、すべてのプライベートメンバーではないのかを知りたいですか?
これはほとんど動作します。期待され観察された行動とは何か? –
ステートメントの最後に疑問符を置くだけで、役に立つ質問は出ませんか? –
これはそのまま動作しますが、ファクトリクラスのみへのアクセスを制限する正しい方法であるかどうかは不明でした。 CarクラスのすべてのプライベートメンバーをCarFactoryクラスに公開せずにこれを行う方法はありますか? – tylerjw