C ++ Template-Klasse, die eine andere Template-Klasse mit einem vorlagenspezifischen Eingabetyp erbt [Duplikat]

8
  

Mögliche Duplikate:
GCC-Problem: Verwenden eines Members einer Basisklasse, die von einem Template-Argument abhängt
Warum benötigt GCC zusätzliche Deklarationen in Vorlagen, wenn VS nicht?
< a href="https://stackoverflow.com/questions/1239908/why-doesnt-a-derived-template-class-have-access-to-a-base-template-class"> Warum gibt es keine abgeleitete Vorlage? Klasse Zugriff auf eine Basisvorlagenklasse haben
iPhone-Compiler geerbt Templated Basisklassen mit pass-through-Typ nicht in der Zeit erweitert werden (nur aussehen)

Sorry für den verwirrenden Titel, den ich am besten finden könnte.

Hier ist ein Code, der mein Problem veranschaulicht ...

Eine Basisvorlagenklasse:

%Vor%


Versuch, TestBase mit einer anderen Template-Klasse zu untergliedern ...

Dadurch wird "someInt wurde in diesem Bereich nicht deklariert" zur Kompilierzeit:

%Vor%



B) Das funktioniert gut (mit dem Unterschied, dass ich die Template-Eingabe von TestBase explizit spezifiziere)

%Vor%



Warum akzeptiert TestSub aus (A) nicht wie in (B) someInt korrekt?

Vielen Dank im Voraus.

    
Josh Rosen 19.07.2010, 00:36
quelle

1 Antwort

7

Weil TestBase auf X spezialisiert sein könnte, was auch immer X sein wird. Daher müssen Sie der Kompilierung mitteilen, dass es sich um einen abhängigen Wert handelt, indem Sie ihn vollständig qualifizieren. Anstelle von

%Vor%

sag lieber

%Vor%

Sie könnten auch

verwenden %Vor%

Der Punkt ist, dass der Compiler nicht annehmen wird, dass ein Name von einem Template-Parameter abhängt, den er kennen muss, bevor er diese Prüfung auf die Instanziierungszeit verschiebt. Für ein Experiment sehen Sie, was passiert, wenn Sie ein globales Etwas einführen.

    
Logan Capaldo 19.07.2010 00:43
quelle

Tags und Links