读书人

data member 指针的有关问题

发布时间: 2012-04-07 17:31:50 作者: rapoo

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++标准规定的,没啥讨价还价的余地。不要钻牛角尖。

读书人网 >C++

热点推荐