Я хочу предотвратить что-либо, кроме фабрики для моего класса, от создания объектов типа моего класса. Мне нужен этот класс для публичного интерфейса, но я хочу ограничить его создание только его фабрикой. Как мне это сделать?Как ограничить вызов конструктора одного класса только его заводским классом?
Назовем класс 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