템플릿 클래스 생성자에 대한 컴파일러 오류 "...에 대한 정의되지 않은 참조"는 명시적인 인스턴스화가 부족함을 나타냅니다. 프로그램에 사용되는 특정 템플릿 클래스에 대한 지침입니다. 이 문제는 명시적으로 필요할 때까지 컴파일러가 템플릿 코드를 자동으로 컴파일하지 않기 때문에 발생합니다.
구현 파일 끝에 명시적 템플릿 인스턴스화 문을 추가합니다(콜라 .cpp):
template class cola<float>; template class cola<string>;
추가로 다음 줄을 포함하세요. nodo_colaypila.cpp:
template class nodo_colaypila<float>; template class nodo_colaypila<std::string>;
이렇게 하면 컴파일러가 필수 템플릿 클래스를 컴파일하게 됩니다.
cola에서 구현 코드 이동 .cpp 및 nodo_colaypila.cpp를 각각 cola.h 및 nodo_colaypila.h로 변환합니다. 이렇게 하면 템플릿 클래스를 사용하는 모든 번역 단위에서 기능 정의의 가용성이 보장됩니다.
솔루션 1:
해결책 2:
nodo_colaypila<T><T>* ult, pri;
다음과 같아야 합니다.
nodo_colaypila<T>* ult, *pri;
위 내용은 템플릿 클래스 생성자에 대해 '정의되지 않은 참조' 오류가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!