因此,如果我有如下结构:
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,你在研究"实例与类"时迷失了方向