J'ai une structure avec deux membres, par exemple:
struct DataSet {
int x;
int y;
};
..., et je dois y accéder dans une méthode, mais une seule à la fois, par exemple:
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);
Sortie que je souhaite avoir:
16
36
Que dois-je faire lorsque je dois résoudre un problème comme celui-ci? Existe-t-il un type de données pouvant accéder à un membre?
dsm = 0
pour accéderx
etdsm = 4
pour accédery
, puis vous y accéderiez commeint val = int(*(&ds+dsm))
.c++
a un pointeur vers des membres, donc pas besoin de hacks de pointeur personnalisés pour que cela fonctionne.Réponses:
Oui, vous pouvez utiliser un pointeur vers un membre. La syntaxe du type est
TypeOfMember TypeOfStruct::*
, et pour y accéder, vousstruct_variable.*pointer_variable
la source