Hi,
ich hab ne frage zu C++ und der möglichkeit der Mehrfachvererbung.. evtl kann mir ja jemand hier helfen
(Es geht um C++ nicht C#.. ich benutze nur die C# code-tags

)
Also,
ich habe 3 Klassen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| class Main { public: void helloWorld(); };
class A { public: void doSomething(int x); };
class B { public: void doNothing(string s); }; |
und jetzt eine dritte klasse die IMMER von Main ableitet, und zusätzlich manchmal von A und/oder B:
C#-Quelltext
1: 2: 3: 4:
| class AB : public Main, public A, public B { public: ..... }; |
soweit kein problem, aber..
Im code werden die klassen alle als array von Main* gespeichert, aber wenn ich jetzt gern auf die doNothing() funktion zugreifen möchte, wie mach ich das?
Ich ging davon aus, dass ich einfach:
C#-Quelltext
1:
| ((B*)myClass)->doNothing(..); |
verwenden kann, aber das klappt leider nicht, also es kommt dann wohl irgendwie intern durcheinander und ruft falschen code auf...
wenn ich stattdessen schreibe:
C#-Quelltext
1:
| ((AB*)myClass)->doNothing(..); |
geht es, aber die lösung ist für mich eher unpraktisch, da ich halt wie gesagt manchmal auc hnur von A oder B ableite und dementsprechend nicht immer in AB* casten kann...
Die einzige lösung die mir einfiele wären viele if abfragen die überprüfen um welchen typ es sich handelt und dann dementsprechend casten...
Gibt's da irgendwas anderes, besseres?
Aya~
PS: In dem moment wo ich die doNothing() funktion aufrufe weiß ich sicher das das objekt von B geerbt hat, aber ich weiß nicht sicher ob es auch von A geerbt hat = ich kann nicht sicher sagen ob ich nach AB* oder nach BOnly* casten muß..