2011-12-29 1 views
1

가능한 중복 :
Why should the implementation and the declaration of a template class be in the same header file?분리 생성자 구현

내 헤더 파일이 제대로 작동

template <typename T> 
class AA : public BB<T> 
{ 
public: 
    AA() 
    { ... } 

있습니다. 하지만 헤더 파일에서 생성자 구현을 분리해야합니다.

그래서 cpp에 나는

template <typename T> 
AA<T>::AA() 
{ ... } 

나는이를 컴파일 할 때, 그것은 컴파일해야하지만 확인되지 않은 외부 기호 오류가 발생합니다. 내가 여기서 무엇을 놓치고 있니?

+0

권장되지는 않지만, 당신은 cpp에 갈 수 있으며, 마지막에'AA ; AA c;'기타 링크 오류를 해결하려면 –

+0

Edison Design Group 프런트 엔드를 사용하는 컴파일러를 구입해야합니다. 실제로 템플릿에 외부 연결을 구현 한 유일한 사람입니다. 현재 C++ 표준에서는 더 이상 사용되지 않습니다. Deprecation에 대한 가장 영향력있는 투표는 Edison Design Group에서 나왔습니다. –

+0

@parapurarajkumar 나는 당신을 올바르게 이해하는지 잘 모르겠습니다. –

답변

4

: 대략 같은 문제는 약 2 일 전에 대답했다

template class AA<int>; 

이 템플릿에서 정의를 생성합니다,하지만 경우에만 사용하다 당신은 당신의 클래스 클라이언트들이 사용할 타입을 알고있다.

2

템플릿 구현을 .cpp 파일에 넣는 경우 인스턴스가 만들어 지는지 확인해야합니다. 컴파일러는 자동으로 수행하지 않습니다. 당신은 명시 적으로 사용하여 구현 파일에서 템플릿을 인스턴스화 할 수 do template always have to be in the header?