Problem mit lokaler Klasse in einer template member Funktion
-
Hallo,
ich habe ein Problem mit einer lokalen Klasse innerhalb einer template member Funktion in einem Klassen Template. Die lokale Klasse ist von einer anderen ebenfalls lokalen Klasse abgeleitet, die eine virtuelle Funktion hat.Ich benutze den VC++ 6.0.
template < class R > struct Test { struct inner { virtual void foo() { } R r_; }; template< class T> void func(T t, R r) { struct local : public inner { virtual void foo() { /*...*/ } T t_; }; //... } //... }; int main() { Test<int> test; test.func(2,5); return 0; }
Beim kompilieren bekomme ich folgenden Fehler:
fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'msc1.cpp', line 1786)
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more informationIst der Code überhaupt legal?
Oder liegt es am VC++6? Gibt es vielleicht einen Workaround?
-
Liegt am Compiler. Der Code ist vollkommen korrekt.
-
Ich hab nicht besonders viel Ahnung von Template, aber müsstest du nicht func einen Template-Parameter übergeben?
also:int main() { Test<int> test; test.func<int>(2,5); //oder so in der Art??? return 0; }
mfg
Glamdring
-
Glamdrink schrieb:
Ich hab nicht besonders viel Ahnung von Template, aber müsstest du nicht func einen Template-Parameter übergeben?
Nein -> Argument Deduction