Ich habe eine Struktur mit zwei Mitgliedern, zum Beispiel:
struct DataSet {
int x;
int y;
};
... und ich muss auf diese in einer Methode zugreifen, aber immer nur auf eine, zum Beispiel:
void foo(StructMember dsm) { // ("StructMember" does not exist)
DataSet ds;
ds.x = 4;
ds.y = 6;
std::cout << ds.dsm * ds.dsm << std::endl;
}
foo(x);
foo(y);
Ausgabe, die ich haben möchte:
16
36
Was soll ich tun, wenn ich ein solches Problem lösen muss? Gibt es einen Datentyp, der auf ein Mitglied zugreifen kann?
dsm = 0
zum Zugriffx
unddsm = 4
zum Zugriff übergehen undy
dann wie gewünscht darauf zugreifenint val = int(*(&ds+dsm))
.c++
verfügt über Zeiger auf Mitglieder, sodass keine benutzerdefinierten Zeiger-Hacks erforderlich sind, damit dies funktioniert.Antworten:
Ja, Sie können einen Zeiger auf ein Mitglied verwenden. Die Syntax für den Typ lautet
TypeOfMember TypeOfStruct::*
und für den Zugriff tun Sie diesstruct_variable.*pointer_variable
quelle