【发布时间】:2010-09-30 01:28:30
【问题描述】:
我的应用程序中有类似的代码:
class A
{
public: int b;
}
class C
{
public: int d;
}
void DoThings (void *arg1, MYSTERYTYPE arg2);
A obj_a;
C obj_c;
DoThings(&obj_a, &A::b);
DoThings(&obj_c, &C::d);
问题是 - MYSTERYTYPE 应该是什么? void* 和 int 都不起作用,尽管如果通过 printf 输出值 &A::b 就可以正常打印。
澄清:是的,&A::b 是在 C++ 下定义的。是的,我正在尝试将偏移量分配给班级成员。是的,我很狡猾。
编辑:哦,我可以使用 offsetof()。还是谢谢。
【问题讨论】:
-
哇,这很有趣。我记下了我的答案,j_random_hacker 得到了信任。
-
已编辑,因此 DoThings 看起来可以做一些有意义的事情,因为你们非常热衷于有意义的事情。
-
zarawesome,你不能总是使用 offsetof。如果你有一个非 POD,这是不可能的(如果你有一个用户定义的构造函数或私有数据成员,它已经是非 Pod)。强烈推荐成员指针
-
@Jeff:谢谢,虽然很有趣,我以为我在拉拉的土地上很遥远......
标签: c++ class pointers member-pointers