繁体   English   中英

通过 C++ 中的变量访问结构中的成员

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM