2012-05-18 2 views
2

나는 이런 식으로하고 싶지만 가능한지 확실치 않습니다. Google에서 어떤 정보도 찾을 수 없습니다.템플릿 유형을 모른 채 템플릿 클래스를 가리킬 수 있습니까?

template <typename T> 
class Container { 
public: 
    T *ptr; 
}; 

class Other { 
private: 
    Container *container_ref; 
} 

도움 주셔서 감사합니다.

+0

컴파일 타임 다형성이라고도 불리는 템플릿이 아니라 실행 중의 다형성이 정말로 필요한 것처럼 들립니다. –

+0

예! '기타'를 템플릿으로 만듭니다. –

답변

5

Container을 담당하는 경우 템플릿 기반이 아닌 기본 클래스에서 상속 받고 포인터를 유지할 수 있습니다.

+0

사실 그것은'shared_ptr'의 구현이 당신이 나중에 다형성이 아닌 삭제를 할 수 있도록 할당 한 것의 유형을 추적하는 것입니다. –

2

아니요. 템플릿은 클래스가 아니므로 클래스를 작성하는 방법에 대한 지침입니다. 템플릿 매개 변수 (명시 적 또는 암시 적)가 없으면 완료되지 않습니다.

문제의 해결책은 Boost::any입니다.

+1

사람들이 템플릿 * 클래스가 아닌 클래스 * 템플릿이라고 부르는 이유가 있습니다. 사실 템플릿이며 클래스가 아닙니다! –

관련 문제