[gelöst] Ableitung und Verallgemeinerung
-
Hallo,
Ich habe eine Klasse, von der ich mehrere andere Klassen ableite. Die anderen Klassen spezialisieren die Basisklasse nur in einer zusätzlichen Funktion,
machen aber was anderes. In einer weiteren Klasse möchte ich die Funktionalität dieser Klassen benutzen, bei mir sieht das so aus:class CEffect { [...] }; class CMyEffect1 { : public CEffect public: [...] void Update(); }; class CMyEffect2 { : public CEffect public: [...] void Update(); };In einer anderen Klasse möchte ich dann die Funktionalität allgemein nutzen, ohne sagen zu müssen, welche Klasse ich habe. ich weiß, dass das nicht so
einfach möglich ist, aber letztenende soll es in etwa so aussehen:class CMyClass { CEffect* pMyEffect1; CEffect* pMyEffect2; void do() { pMyEffect1 = new CMyEffect1(); pMyEffect1->Update(); pMyEffect2 = new CMyEffect2(); pMyEffect2->Update(); };Kann man das irgendwie realisieren? In Java war das glaube ich durch die
Nutzung von Interfaces und abstrakten Klassen möglich, in C++ hab ich das
bisher nicht geschafft.Norman.
-
Hallo,
Das geht doch ganz einfach. Update muss in der Basisklasse virtual (evtl. auch abstrakt) sein. Wenn du dann in den abgeleiteten Klassen dies Update-Methode ebenfalls implementierst wird bei deinem unteren Code schon die korrekte Funktion aufgerufen (Polymorphie).
http://tutorial.schornboeck.net/virtual.htm
-
Wow, hätte nicht gedacht dass es so einfach ist.
Klappt einwandfrei, danke!MfG,
Norman