Heim > Backend-Entwicklung > C++ > Warum kann auf meine Typdefinition in einer Basisklassenvorlage in meiner abgeleiteten Klassenvorlage nicht zugegriffen werden?

Warum kann auf meine Typdefinition in einer Basisklassenvorlage in meiner abgeleiteten Klassenvorlage nicht zugegriffen werden?

Patricia Arquette
Freigeben: 2024-12-09 15:51:10
Original
784 Leute haben es durchsucht

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

Unerkannte Typedef in abgeleiteter Klassenvorlage

Bei der Deklaration einer abgeleiteten Klassenvorlage B, die von einer Basisklassenvorlage A erbt, wird erwartet, dass typedefs Das in A definierte Objekt wäre in B zugänglich. Im bereitgestellten Beispiel schlägt der Zugriff auf Vec_t in B jedoch mit der Fehlermeldung fehl, dass dies der Fall ist nicht erkannt.

Gemäß dem C-Standard (14.6.2/3) erstreckt sich die unqualifizierte Namenssuche in Klassenvorlagendefinitionen und Memberdefinitionen nicht auf Basisklassen, die von Vorlagenparametern abhängen. Dies bedeutet, dass der unqualifizierte Zugriff auf in der Basisklasse definierte Typedefs in der abgeleiteten Klassenvorlage nicht zulässig ist.

Um dieses Problem zu beheben, muss der vollständige Name der Typedef in der abgeleiteten Klassenvorlage verwendet werden. Dies kann durch explizite Angabe des Basisklassenbereichs wie folgt erreicht werden:

typename A<T>::Vec_t v;
Nach dem Login kopieren

Durch die explizite Qualifizierung des Namens mit dem Basisklassenbereich kann der Compiler den Verweis auf die in der Basisklasse definierte Vec_t-Typdefinition korrekt auflösen Vorlage.

Das obige ist der detaillierte Inhalt vonWarum kann auf meine Typdefinition in einer Basisklassenvorlage in meiner abgeleiteten Klassenvorlage nicht zugegriffen werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage