Pedantische Template Frage
-
Hi, ist es möglich das IMyInterface so zu implementieren, dass sowohl
class MyClass : public Base, IMyInterface {...};als auch
class MyClass : public Base, IMyInterface<MyClass> {...};möglich ist? Dies hier geht leider nicht
class IMyInterface { public: virtual Base* MyFunction() const = 0; }; template <class T> class IMyInterface { public: virtual T* MyFunction() const = 0; };Was dagegen geht ist das hier
template <class T = Base()> class IMyInterface { public: virtual T* MyFunction() const = 0; };mit
class MyClass : public Base, IMyInterface<> {...};Allerdings würde ich das leere <> gerne vermeiden.
-
Nein, das geht afaik nicht - Templates und (reguläre) Klassen sind etwas unterschiedliches und werden auch unterschiedlich vom Compiler verwendet.
(bei einem Funktionsaufruf kannst du schließlich auch nicht die Klammern () weglassen, selbst wenn die Funktion keine Parameter braucht)