Aus dem Template geerbte Funktion definieren geht nicht
-
Servus,
folgender Code
template<typename T> class Foo { public: int Bar(T baz); }; class Derived: public Foo<int> {}; int Derived::Bar(int baz) { // do something }kompiliert nicht mit der Meldung:
test.cpp:15: error: no ‘int Derived::Bar(int)’ member function declared in class ‘Derived’
Sollte die nicht geerbt werden?
Gruß,
Phil
-
PhilippM schrieb:
test.cpp:15: error: no ‘int Derived::Bar(int)’ member function declared in class ‘Derived’
Sollte die nicht geerbt werden?
Das bedeutet nicht, dass du die Definition erst in Derived machen kannst, es sei denn, du redeklarierst.
-
Edit: Nichts.
-
Okay danke, dann muss ich das wohl anders machen.
Wenn Derived nicht noch weitere member bekommt, dann geht ja das:
typedef Foo<int> Derived; template<> int Derived::Bar(int) { }
-
typedef Foo<int> Derived;Da ist aber der Name "Derived" ziemlich irreführend.
Was möchtest du genau erreichen? Willst du eine Spezialisierung von
Foofürinteinrichten? Brauchst du überhaupt ein Template?