C ++无论如何在不知道名称的情况下访问数据成员

时间:2014-07-25 15:43:56

标签: c++ struct

所以如果我有一个结构如下:

struct MyObject {
    int x;
    int y;
};

有没有办法在不知道名字的情况下获取或操纵MyObject的数据成员?

换句话说,实现同样的目的:

MyObject.x = 10;

,但鉴于我不知道MyObject的数据成员名为x ..

这样的事情:

MyObject[0] = 10;  // x = MyObject's first data member....
MyObject[1] = 20;  // y = MyObject's second data member....

2 个答案:

答案 0 :(得分:0)

您可以使用匿名联盟

Union u {
    Myobject obj;
    Int a[2];
};

// U.a[0] corresponds to u.obj.x
// U.a[1] corresponds to u.obj.y
// 

请注意,我认为obj必须是POD才能实现。

答案 1 :(得分:0)

void func(void* data)
{
    int* a = (int*) data;
    *a++ = 10;
    *a++ = 20;
}

会改变一个对象。但恕我直言,你在学习“实例与课程”

的方式