Mam strukturę z dwoma członkami, na przykład:
struct DataSet {
int x;
int y;
};
... i muszę uzyskać do nich dostęp metodą, ale tylko jedną na raz, na przykład:
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);
Dane wyjściowe, które chcę mieć:
16
36
Co powinienem zrobić, gdy muszę rozwiązać taki problem? Czy istnieje typ danych, który może uzyskać dostęp do członka?
dsm = 0
do dostępux
idsm = 4
dostępuy
, a następnie uzyskać do nich dostęp w podobny sposóbint val = int(*(&ds+dsm))
.c++
ma wskaźnik do członków, więc nie ma potrzeby niestandardowych włamań wskaźnika, aby to zadziałało.Odpowiedzi:
Tak, możesz użyć wskaźnika do członka. Składnia dla tego typu to
TypeOfMember TypeOfStruct::*
i dostęp do ciebiestruct_variable.*pointer_variable
źródło