Ich habe Probleme beim Implementieren reiner virtueller Funktionen, die von einer abstrakten Klasse geerbt wurden, wenn die betreffenden Klassen in *.h
und *.cpp
Dateien aufgeteilt sind. Der Compiler (g++
) gibt mir die Meldung, dass die abgeleitete Klasse aufgrund des Vorhandenseins reiner Funktionen nicht instanziiert werden kann.
/** interface.h**/
namespace ns
{
class Interface {
public:
virtual void method()=0;
}
}
/** interface.cpp**/
namespace ns
{
//Interface::method()() //hier nicht implementiert
}
/** derived.h **/
namespace ns
{
class Derived : public Interface {
//Anmerkung - siehe unten
}
}
/** derived.cpp **/
namespace ns
{
void Derived::Interface::method() { /*etwas tun*/ }
}
/** main.cpp **/
using namespace ns;
int main()
{
Interface* instanz = new Derived; //Compilerfehler
}
Bedeutet das, dass ich die Methode() zweimal deklarieren muss - im *.h
der Interface und auch im derived.h
? Gibt es keinen anderen Weg?