2
팩토리 메소드 설정의 일종으로 각각 다른 유형의 객체를 만들지 만 공통 인터페이스를 충족시키는 - 즉 모두 핵심 클래스를 서브 클래 싱하는 객체를 만드는 펑터를 등록하려고합니다. 각 FactoryMethod
템플릿 특수화는 별도의 형태이기 때문에다른 템플릿 매개 변수가있는 템플릿 객체의 집합
template <class T> struct FactoryMethod
{
X* create();
}
내가 가질 수 없습니다
(IIRC) std::map<std::string,FactoryMethod*>
:
struct IFactoryMethod
{
virtual X* create()=0;
};
template <class T> struct FactoryMethod : public IFactoryMethod
{
virtual X* create();
};
std::map<std::string,IFactoryMethod*> factories;
오른쪽? 나는 STL에 표준이 있다는 것을 알지 못합니다. 부스트가 그렇다고해도 깔끔하게 만들 수있는 방법이 있습니다.하지만 지금은 부스트를 사용하지 않고 어쨌든 관심이 있습니다.
그런 다음 올바른 유형을 만들기 위해 factories
을 유형 이름 (예 : XML에서 읽음)을 기반으로 조회 할 수 있습니다.
의사 코드입니다. 휴식을주세요! "소유권 위임 포인터"를 분명히 할 수 있습니까? –
그는 기본적으로 원시 포인터를 사용하지 말라고 지시하고 대신 shared_ptr 또는 unique_ptr 를 사용하여 포인터로 안전하게 작업 할 수 있습니다. 그들은 boost에서 왔고 std :: tr1 또는 std in C++ 0x에서 찾을 수 있습니다. 여기를보실 수 있습니다 : http://www.boost.org/doc/libs/1_38_0/doc/html/boost/interprocess/unique_ptr.html –
MatiasFG
pah, 남자는 포인터를 두려워하지 않습니다! –