Problem mit Klasse in Template Klasse
-
Hi,
vorneweg, ich benutze die Visual Studio 2008 Express Edition.
Ich habe folgenden Code:
template< typename a > struct A { struct B { a b; }; B GetB( void ); }; template< typename a > A< a >::B A< a >::GetB( void ) { return( B() ); }Wenn ich versuche dies zu compilieren bekomme ich folgende Fehler:
error C2143: Syntaxfehler: Es fehlt ';' vor 'A<a>::GetB' error C4430: Fehlender Typspezifizierer - int wird angenommen.Habe ich einen Fehler gemacht?
Für mich sieht es allerdings so aus, als
würde der Compiler das Konstrukt nicht verstehen, da er
den ersten Teil, der der Rückgabewert ist als Klassenansprache versteht.
( ich weiß sehr konfus ausgedrück, aber ich hoffe ihr wisst was ich meine )Falls es am Compiler liegt, wäre ich sehr dankbar wenn einer versuchen würde
den Code mit GCC zu compilieren. Vlt klappt es damit.mfg
-
Es fehlt typename
-
Vielen Dank

Also hatte mein Lehrer gelogen, als er meinte, dass man typename
niemals braucht und nur da ist um in der template liste
typename anstatt class schreiben zu können...
-
templu schrieb:
Vielen Dank

Also hatte mein Lehrer gelogen, als er meinte, dass man typename
niemals braucht und nur da ist um in der template liste
typename anstatt class schreiben zu können...Absichtlich gelogen ziemlich sicher nicht, vermutlich wusste er es nicht besser. Wenn er (zu) lange mit VC6 gearbeitet hat könnte das vermutlich der Grund sein warum er das glaubt, denn mit VC6 braucht man typename wirklich nicht. Der streikt sogar manchmal wenn man es an Stellen verwendet wo es laut Standard vorgeschrieben ist.