template-klasse von nicht-template-klasse ableiten
-
Hi Leuts,
geht sowas? Also:
class A { };template<typename T> class B : A { T f(T) {} };
ok, das geht, schon probiert. Kann ich jetzt aber fuer die Funktion f eine virtuelle Basis-funktion schreiben, oder habe ich damit die Grenzen von C++ gesprengt ... 
-
c-plusplus-fan schrieb:
...Kann ich jetzt aber fuer die Funktion f eine virtuelle Basis-funktion schreiben, ...
Jau, kannst Du machen (hast Du das nicht ausprobiert ?), aber obacht: "virtual schützt vor overloading nicht !"
Wenn Du mit dem template-Parameter nicht den Typ des Parameters der "Basisklassenfunktion" "triffst", passiert nicht das, was Du erwartest:
class A { protected: virtual int f(int); }; template<typename T> class B : public A { protected: T f(T) {} }; int main() { B<int> b; // hat eine (overridden) Funktion int f(int) B<double> c; // hat zwei Funktionen: int f(int) und double f(double); ...Insgesamt halte ich das für keinen glücklichen Ansatz.
Gruß,
Simon2.