Problem mit Templateklasse als Rückgabetyp
-
Hi
ich wollte eine Methoide schreiben,die einen Funktionsterm anhand von 2 Punkten feststellt und dann zurück gibt.
Mein Problem ist,dass ich mein Programm einfach nicht kompiliert bekomm aufgrund irgendwelcher Fehler bei/in der Methode.Ich hoffe,dass mir jemand helfen kann.
Grüße
Deklaration
template <typename Tm,typename Tb,typename Tfx> class LineareFunktion { const Tm m; const Tb b; public: template <typename Tm,typename Tb> class Funktionsterm { public: const Tm m; const Tb b; Funktionsterm(Tm m,Tb b):m(m),b(b){}; }; class Funktionsterm<Tm,Tb> BerechneFunktionsterm(int x1,int y1,int x2,int y2); };Definition (irgendwie fehlerhaft^^)
template<typename Tm,typename Tb> class Funktionsterm<Tm,Tb> // Rückgabetyp LineareFunktion<Tm,Tb,Tfx>::BerechneFunktionsterm(int x1,int y1,int x2,int y2) { //.............. Berechnungen Tm m; Tb b; return Funktionsterm<Tm,Tb>(m,b); }
-
dgreztrtzrz schrieb:
aufgrund irgendwelcher Fehler bei/in der Methode.
(irgendwie fehlerhaft^^)
gehts noch ein bisschen ungenauer?
-
error C2143: Syntaxfehler: Es fehlt ';' vor 'LineareFunktion<Tm,Tb,Tfx>::BerechneFunktionsterm'
error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
C1903: Weiterverarbeitung nach vorherigem Fehler nicht möglich; Kompilierung wird abgebrochen.[code]
-
dgreztrtzrz schrieb:
...
Ein wenig Kommentiert und anders eingerückt... Aber zu faul um es im Compiler nachzuprüfen:
template <typename Tm,typename Tb,typename Tfx> // Normalerweise bricht man hier um (Lesbarkeit) class LineareFunktion { const Tm m; const Tb b; public: template <typename Tm,typename Tb> class Funktionsterm { public: const Tm m; const Tb b; Funktionsterm(Tm m, Tb b) : m(m), b(b) {}; }; // Hier ist das class zuviel... class Funktionsterm<Tm,Tb> BerechneFunktionsterm(int x1,int y1,int x2,int y2); }; // Dies muss noch im Header stehen (Template wegen) // Und ich tippe das es wie folgt aussehen muß: template<typename Tm,typename Tb,typename Tfx> // Tfx gehört noch dazu LineareFunktion<Tm,Tb,Tfx>::Funktionsterm<Tm,Tb> // <-- Innere Klasse wegen LineareFunktion<Tm,Tb,Tfx>::BerechneFunktionsterm(int x1,int y1,int x2,int y2) { }