Konvertierungsoperator für "Zeiger auf Objekt"
-
Ich habe diese Klasse A mit Konvertierungsoperatoren für Objekte einer Klasse B. Das ist soweit ok, aber ich bekomme ein Problem, sobald ich es mit einer Funktion zu tun habe, die einen Zeiger ein B-Objekt erwartet. Ich könnte der Klasse A Konvertierungsoperatoren für B* verpassen, aber dann habe ich mir eine inkonsistene Schreibweise geschaffen:
A aobj; B bobj; // DoSomethingWithB(B* p) DoSomethingWithB(&b); DoSomethingWithB(a); // statt &aEine andere Möglichkeit wäre, den operator & so zu überladen, dass er einen Zeiger auf B zurückgibt. Dann geht aber nichts mehr, sobald ich wieder mal einen Zeiger auf A haben will. Die hinter beiden Objekten liegende Datenstruktur ist prinzipiell identisch, deshalb könnte ich die Zeiger zueinander auch immer explizit casten, aber da habe ich dann einen Mehraufwand an Schreibarbeit.

Was wäre für mein Problem wohl die beste Lösung?
-
das könnte an deinem abstrakten beispiel liegen, aber ich finde die tatsächliche inkonsistenz ist eine andere, nämlich dass die funktion "DoSomethingWithB" heißt und aber plötzlich ein A übernimmt. warum nicht
DoSomethingWithB(a.asB()); // statt &a?
-
Naja, meine Klasse A ist im Prinzip ein B - soll mir nur die Arbeit vereinfachen.
Bei obigen Satz ist mir jetzt auch gerade eine Lösung eingefallen, die wohl die Beste sein dürfte: Ich erbe mit A einfach von B und mache mir Polymorphie zu nutze.