У меня есть структура с двумя членами, например:
struct DataSet {
int x;
int y;
};
... и я должен получить доступ к тем в методе, но только по одному за раз, например:
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);
Вывод, который я хочу получить:
16
36
Что мне делать, когда мне нужно решить такую проблему? Есть ли тип данных, который может получить доступ к члену?
dsm = 0
к доступуx
иdsm = 4
доступуy
, а затем получаете доступ к ним как кint val = int(*(&ds+dsm))
.c++
есть указатели на члены, поэтому нет необходимости в пользовательских взломах указателей, чтобы это работало.Ответы:
Да, вы можете использовать указатель на член. Синтаксис для типа есть
TypeOfMember TypeOfStruct::*
, и для доступа вы делаетеstruct_variable.*pointer_variable
источник