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



因此,如果我有如下结构:

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....

您可以使用匿名联合

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才能工作。

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

会改变一个对象。但是IMHO,你在研究"实例与类"时迷失了方向

相关内容

最新更新