Nested-Classes in Template-Klassen -> Vererebung
-
Danke!
-
derni schrieb:
typename Basis<T>::Nested elem;
Ist das erlaubt???
-
Weis.NET schrieb:
derni schrieb:
typename Basis<T>::Nested elem;
Ist das erlaubt???
Generell: Ja ist es, aber was daran stört dich?
-
Das man einem Objekt und einer Klasse den selben Namen gibt
-
Weis.NET schrieb:
Das man einem Objekt und einer Klasse den selben Namen gibt
wo ist hierbei deiner meinung nach das objekt, und wo die klasse?
-
derni schrieb:
[code] Nested elem; //Objekt ... typename Basis<T>::Nested elem; //KLasse [/code]
-
Weis.NET schrieb:
derni schrieb:
[code] Nested elem; //Objekt ... typename Basis<T>::Nested elem; //KLasse [/code]
Wo siehtst du da die Klasse? elem ist in beiden Fällen in Objekt.
das typename bezieht sich auf Nested, damit klar ist, dass Nested ein Typname und kein Objekt ist.
-
Wieso denn das?
Basis::Nested wird elem genannt (das macht das typedef), aber Nested ist eine Klasse, während Nested elem besagt: lege eine Instanz der Klasse Nested an, also ein Objekt.
Somit gibts in Abgeleitet elem als Objekt und als Typedef für eine KLasse.
-
Wo siehst du denn da ein typedef?
-
ums ganz klar zu machen: typename ist ungleich typedef!
name != def