Tengo una estructura con dos miembros, por ejemplo:
struct DataSet {
int x;
int y;
};
..., y tengo que acceder a ellos en un método, pero solo uno a la vez, por ejemplo:
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);
Salida que deseo tener:
16
36
¿Qué debo hacer cuando tengo que resolver un problema como este? ¿Hay algún tipo de datos que pueda acceder a un miembro?
dsm = 0
para accederx
ydsm = 4
accedery
, y luego accedería a ellos comoint val = int(*(&ds+dsm))
.c++
tiene puntero a miembros, por lo que no hay necesidad de hacks de puntero personalizados para que esto funcione.Respuestas:
Sí, puede usar un puntero a miembro. La sintaxis para el tipo es
TypeOfMember TypeOfStruct::*
, y para acceder a usted, hagastruct_variable.*pointer_variable
fuente