나는 C++에서 이것을 수행하는 방법을 모르지만, 내 핵심 라이브러리를 활용하는 플러그인에서 특정 종류의 객체를 요청할 때 내 라이브러리 사용자가 싱글 톤 객체를 제공하지 못하도록하고 싶습니다. 나는 많은 변형을 시도했지만, 이것은 C++의 템플릿 공장에서의 구현에 대한 나의 현재의 시도이다.템플릿 기반 팩토리
질문은 FooProvider.h 스텁에 주석으로 포함됩니다. 감사!
template <typename T>
class FooProvider : public IFooProvider
{
static_assert(std::is_convertible< T*, IFoo* >::value,
"Interface needs to be of type IFoo");
std::shared_ptr<IFoo> getProvidedFoo()
{
std::shared_ptr<IFoo> rtn =
static_pointer_cast<IFoo> (std::make_shared<T>());
return rtn;
}
}
팩토리 메서드 또는 템플릿 클래스 중 하나만 사용하여 디자인 할 수 있지만 둘 다 사용할 수는 없습니다. 팩토리 메소드를 사용하면 최소한의 매개 변수를 제공하여 계승 된 오브젝트 및 등록 된 오브젝트를 작성할 수 있습니다. – seccpur
코드가 누락되었습니다. [works] (http://cpp.sh/8mx6i). –