헤더 파일에서 템플릿 클래스 구현과 선언의 상호의존성
C 영역에서 템플릿 클래스는 구현이라는 고유한 특성을 갖습니다. 및 선언은 동일한 헤더 파일 내에 있어야 합니다. 이 요구 사항은 정의에 대한 전체 액세스 없이는 템플릿의 각 인스턴스화에 대한 코드를 생성할 수 없는 컴파일러의 무능력에서 비롯됩니다.
예제를 고려하십시오.
// my_template.h template <typename T> class MyClass { public: T value; }; // my_template.cpp #include "my_template.h" template <typename T> void MyClass<T>::foo(T& value) { this->value = value; }
이 예에서 my_template.h에는 다음이 포함됩니다. MyClass 템플릿의 선언과 구현 모두. 이는 MyClass
구현이 별도의 소스 파일로 이동되면 컴파일러는 인스턴스화 프로세스 중에 이를 찾을 수 없습니다. 결과적으로 프로그램이 컴파일되지 않습니다.
따라서 향후 인스턴스화에 대한 성공적인 컴파일 및 코드 생성을 보장하려면 동일한 헤더 파일 내에서 템플릿 클래스의 구현 및 선언을 유지하는 것이 중요합니다.
위 내용은 C 템플릿 클래스 구현과 선언이 동일한 헤더 파일에 있어야 하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!