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 &a
    

    Eine 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.


Anmelden zum Antworten