내 클래스의 팩토리가 내 클래스의 유형의 객체를 생성하는 것을 막고 싶습니다. 공용 인터페이스를 갖기 위해 클래스가 필요하지만, 팩토리 생성을 팩토리로만 제한하려고합니다. 어떻게해야합니까?한 클래스의 생성자를 해당 팩토리 클래스로만 호출하는 것을 어떻게 제한합니까?
클래스 Car
및 공장 CarFactory
을 호출하겠습니다. 다음은이 작업을 수행하는 방법에 내 초기 아이디어는 friend
을 사용하고 공장의 모든 private 멤버를 노출하지 않고 있습니다 : How do I make a constructor available to only the factory class?
위의 코드는 그대로 작동합니다
class Car {
private:
Car();
Car(Car& ref);
friend class CarFactory;
};
class CarFactory {
public:
Car * makeCar();
};
내가 자바에 대한 관련 질문을 발견했다. 명확히하기 위해 모든 개인 회원이 아닌 공장과 생성자 만 공유 할 수있는 방법이 있는지 알고 싶습니다.
거의 작동합니다. 예상되고 관찰 된 행동은 무엇입니까? –
문장 끝 부분에 물음표를 넣는 것만으로도 유용한 질문이되지는 않습니까? –
팩트 클래스에만 액세스를 제한하는 것이 올바른 방법인지는 확실하지 않았습니다. Car 클래스의 모든 private 멤버를 CarFactory 클래스에 노출시키지 않고이 작업을 수행 할 수있는 방법이 있습니까? – tylerjw