2011-11-08 2 views
-1

가능한 중복 : 템플릿 정의?

Why should the implementation and the declaration of a template class be in the same header file?


Why can templates only be implemented in the header file?
내가 C에서 함수 템플릿에 대한 두 가지 기본적인 질문이 ++.

  1. .h 파일에 템플릿을 정의해야합니까?
  2. 나는 dll을 생성하고 해당 dll에서 전체 C++ 클래스를 내 보냈다. 그리고이 클래스는 함수 템플릿을 포함합니다. 이 템플릿을이 DLL을 호출하는 다른 모듈 내부에서 호출하고 있습니다. 이 템플릿 관련 오브젝트 파일이 생성 될 때.

답변

2
  1. 거의 항상. 문제의이 부분에 속하는 수많은.
  2. DLL을로드하는 응용 프로그램은 이미 템플릿을 가져온 상태 여야하므로 (# 1 참조) 런타임에로드하면로드되지 않습니다. 또한 C++ ABI는 매우 까다롭기 때문에 공개 C++ API를 DLL에 넣는 것은 모든 종류의 미묘한 ABI 중단을 요구하고 있습니다.