파생 클래스 템플릿에서 인식할 수 없는 Typedef
기본 클래스 템플릿 A에서 상속되는 파생 클래스 템플릿 B를 선언할 때 typedef가 A에 정의된 내용은 B 내에서 액세스할 수 있습니다. 그러나 제공된 예에서 B 내의 Vec_t 액세스는 오류와 함께 실패합니다.
C 표준(14.6.2/3)에 따르면 클래스 템플릿 정의 및 멤버 정의에서 정규화되지 않은 이름 조회는 템플릿 매개변수에 의존하는 기본 클래스로 확장되지 않습니다. 이는 파생 클래스 템플릿 내에서 기본 클래스에 정의된 typedef에 대한 규정되지 않은 액세스가 허용되지 않음을 의미합니다.
이 문제를 해결하려면 파생 클래스 템플릿 내에서 typedef의 전체 이름을 사용해야 합니다. 이는 다음과 같이 기본 클래스 범위를 명시적으로 지정하여 달성할 수 있습니다.
typename A<T>::Vec_t v;
기본 클래스 범위로 이름을 명시적으로 한정함으로써 컴파일러는 기본 클래스에 정의된 Vec_t typedef에 대한 참조를 올바르게 확인할 수 있습니다. 템플릿입니다.
위 내용은 파생 클래스 템플릿에서 기본 클래스 템플릿의 typedef에 액세스할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!