data member 指针的问题
深度探索c++对象模型
class A
{
public:
int m;
int n;
};
int main()
{
A a;
printf( "%d,%d ",&A::m-1,&A::n);
}
编译有错误:
error C2296: '- ' : illegal, left operand has type 'int A::* '
我用的是vc6.0, 用g++也是如此。
但书上明明有这样的例子啊。p98.
[解决办法]
成员指针只能赋值,不能加减,可以用 union_cast 来转成 int
[解决办法]
指向成员的指针,只能转换成bool,这是C++标准规定的,没啥讨价还价的余地。不要钻牛角尖。