Speicheradressen von Membervariablen



  • Hi,
    ich habe ein paar Probleme mit den Membervariablen von Klassen im Zusammenhang mit Pointern, vielleicht kann mir da jemand helfen 🙂

    meine Ausgangsituation:

    class a
    {
    b m1;
    c* m2;
    }

    b und c sind irgendwelche weitere klassen.

    wenn ich eine funktion f1(a*) und eine Instanz i von a habe kann ich die mit
    f1(&i);
    aufrufen.
    richtig?

    wenn ich eine funktion f2(b*) und eine Instanz i von a habe kann ich die mit
    f2(&(i.m1));
    aufrufen.
    richtig?

    Wenn ich eine funktion f3(c*) und eine Instanz i von a habe kann ich die mit
    f3(i.m2)
    aufrufen.
    richtig?

    Was mache ich, wenn ich eine funktion f4(b*) und einen pointer *i auf eine Instanz von a habe?

    Was mache ich, wenn ich eine funktion f5(c*) und einen pointer *i auf eine Instanz von a habe?

    Oder anders ausgedrückt: Wie bekomme ich jeweils die richtige Speicheradresse dieser Membervariablen?

    Für Hilfe wäre ich dankbar 🙂



  • 1.) Ja
    2.) Nein, da die Member private sind.
    3.) Nein.
    4.) dereferenzieren von i*
    5.) dereferenzieren



    1. ja
      2+3) nein, weil m1 und m2 private sind (wären sie public: ja)
      4+5) &i->m1, bzw i->m2


  • mein Fehler, die funktionen sollen jeweils friends der klassen sein, bzw die member public.



  • Angenommen, die Daten-Elemente der Klasse a seien public...

    1. Ja
    2. Ja
    3. Ja

    4. a * z = ...; f4 ( & (z->m1) ); oder f4 ( & ((*z).m1) );

    4. a * z = ...; f5 ( z->m2 ); oder f5 ( (*z).m2 );

    (Einige Klammern sind überflüssig, dienen nur der Übersicht)

    Gruß,
    SP


Anmelden zum Antworten