>백엔드 개발 >C++ >파생 클래스 템플릿에서 기본 클래스 템플릿의 typedef에 액세스할 수 없는 이유는 무엇입니까?

파생 클래스 템플릿에서 기본 클래스 템플릿의 typedef에 액세스할 수 없는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-09 15:51:10789검색

Why is my typedef in a base class template inaccessible in my derived class template?

파생 클래스 템플릿에서 인식할 수 없는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.