Template und nicht template
-
Mein Gott,
ich verstehe absolut nicht warum folgendes nicht geht:
Wieso kann ich keinen Datentyp der nicht abhängig von einem Template ist,
aus einer Template-Methode zurückgeben?
Das beispiel ist per hand geschrieben und stellt kein minimalbeispiel dar. Aber
im Prinzip ist es das was mich verwirrt...Matrix<double> *mtx = new Matrix<double>(); A a; B* p = NULL; p = a.gen(mtx); //.... template <class T> class A { public: A<T>() {}; b* gen(Matrix<T> * mtx); }; template<class T> b* A<T>::gen(Matrix<T> * mtx) { B* b = new B(); //mach was mit b und mtx return b; }die fehlermeldung lautet:
A.h:259: error: ISO C++ forbids declaration of ‘B’ with no type A.h:259: error: expected ‘;’ before ‘*’ token
-
Hier ist der Fehler:
A a;A ist ein template, du musst es parametrisieren (z.B. A<int> a;)
-
danke aber das ändert nichts an meinem Problem. In der tat habe ich es parametrisiert...
-
Dann hast du B vielleicht vorher nicht richtig deklariert? Bei dem was du da stehen hast kann man nur raten... Versuch mal ein minimales Beispeil in Code zu posten, was wirklich den selben Fehler bringt.
-
b* A<T>::gen(Matrix<T> * mtx) { B* b = new B(); //mach was mit b und mtx return b; }Was ist überhaupt "b"? Und wieso nennst du die Variable so wie den Rückgabetyp? Es wäre auch hilfreich zu wissen, wo hier Zeile 259 ist.
-
Was ist überhaupt "b"? Und wieso nennst du die Variable so wie den Rückgabetyp? Es wäre auch hilfreich zu wissen, wo hier Zeile 259 ist.
Das kommt noch dazu. Der Code ist hier recht unsauber "mal eben" hingeferkelt, so dass man nichtmehr genau erkennen kann was es mal gewesen sein könnte. Originalcode hätte mehr gebracht

-
pumuckl schrieb:
Was ist überhaupt "b"? Und wieso nennst du die Variable so wie den Rückgabetyp? Es wäre auch hilfreich zu wissen, wo hier Zeile 259 ist.
Das kommt noch dazu. Der Code ist hier recht unsauber "mal eben" hingeferkelt, so dass man nichtmehr genau erkennen kann was es mal gewesen sein könnte. Originalcode hätte mehr gebracht

Ihr könnt doch unmöglich erwarten, dass er hier seine genialen Codez postet und damit riskiert, dass sie ihm von Noobs wie euch geklaut werden!