[英]Access a member in a struct via a variable in C++
我有一个包含两个成员的结构,例如:
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
当我必须解决这样的问题时,我该怎么办? 是否有可以访问成员的数据类型?
是的,您可以使用指向成员的指针。 该类型的语法是TypeOfMember TypeOfStruct::*
,要访问你做struct_variable.*pointer_variable
using StructMember = int DataSet::*; // Pointer to a member of `DataSet` of type `int`
void foo(StructMember dsm) {
DataSet ds;
ds.x = 4;
ds.y = 6;
std::cout << ds.*dsm * ds.*dsm << std::endl;
}
int main() {
foo(&DataSet::x);
foo(&DataSet::y);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.