Ich bringe hier 3 Versionen von Code, der erste verursacht einen Kompilierungsfehler, der zweite und der dritte wurden erfolgreich kompiliert.Fehler: verschachtelte Klasse in einer geschachtelten Klasse in einer Template-Klasse "ist kein Typ"
Code 1:
Ich habe Klasse Bottom
eine verschachtelte Klasse in Middle
ist, die eine verschachtelte Klasse in einer Template-Klasse ist Top
template <class>
struct Top {
struct Middle {
struct Bottom {};
};
void useclass(Middle::Bottom);
};
Dieser Code gibt einen Fehler:
main.cpp:6:27: error: 'Top::Middle::Bottom' is not a type
void useclass(Middle::Bottom);
^
Code 2:
ähnlich Code 1 aber mit Top
ist eine normale Klasse (nicht Vorlage)
struct Top {
struct Middle {
struct Bottom {};
};
void useclass(Middle::Bottom);
};
Dieser Code erfolgreich ohne Fehler
Code 3 zusammengestellt wurde:
ähnlich Code 1 aber mit Methode useclass
unter Middle
statt Bottom
template <class>
struct Top {
struct Middle {
struct Bottom {};
};
void useclass(Middle);
};
Dieser Code wurde erfolgreich als auch kompilierte
Bitte sagen Sie mir:
Warum 1-Code kann nicht kompiliert werden zusammengestellt, die Regel von C++ verhindert, dass es zu werden?
Gibt es eine Möglichkeit eine verschachtelte Klasse in einer verschachtelten Klasse in einer Template-Klasse zu verwenden wie
Bottom
als eine Art?
@PeteBecker Ich aktualisierte, danke! – DMaster
@ M.M Nicht einmal das. Es ist ein Betrüger von http://stackoverflow.com/questions/610245/where-and-why-do-i-have-to-put-the-template-and-typename-keywords – NathanOliver
@NathanOliver welcher Teil dieses Codes erklärt die Situation von OP genau? Es ist mir nicht klar –