这是我的代码:
class X
{
public:
X():_x(5){}
void GetVal(int & oVal)
{
oVal = _x;
}
private:
int _x;
};
class Y
{
public:
X * const GetX()
{
return &_x;
}
private:
X _x;
};
int main()
{
Y y;
X * p = y.GetX();
int * pInt = new int[2];
p->GetVal(pInt[0]);
}
在 main 的最后一行,我得到一个错误
从 const 限定函数对成员的错误访问
仅当代码在 sun solaris 系统上编译时才会出现此错误,并且不会在 windows 或 aix 系统上发生。知道为什么吗?
最奇怪的是,如果我用一个简单的整数 (int a = 0; p->GetVal(a)) 替换 pInt[0],错误就消失了