typename und ctor?
-
Hallo Leute!
template<class T> class foo { public: class foo2 { public: foo(int) {} }; }; template<class T> class Test { public: Test() { typename foo<T>::foo2(7); } };
ist dieser typename noetig?
ich tippe zwar auf JA, aber Borland Compiler empfinden das als Fehler und den anderen compilern ist es egal. Nur Codewarrior will hier n typename.was ist richtig?
PS: desto laenger ich darueber nachdenke, desto mehr glaube ich, das typename ist unnoetig. aber ich werd mir da immer unsicherer
-
Hallo,
mal abgesehen davon, dass der Ctor foo2 heißen muss:
das typename ist unnötig, da du nicht einen Typen deklarierst sondern eindeutig ein Objekt erzeugst.
Du bräuchtest das typename, wenn du eine benannte Variable deklarieren würdest:typename foo<T>::foo2 f(2);
-
HumeSikkins schrieb:
Hallo,
mal abgesehen davon, dass der Ctor foo2 heißen muss:ah, sorry. hab den code nur vereinfacht und dabei nicht genau genug geschaut.
das typename ist unnötig, da du nicht einen Typen deklarierst sondern eindeutig ein Objekt erzeugst.
danke!