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
-
- ja
2+3) nein, weil m1 und m2 private sind (wären sie public: ja)
4+5) &i->m1, bzw i->m2
- ja
-
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. Ja4. 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