これが私のコードです:
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 システムでは発生しません。理由はありますか?
また、最も奇妙なことは、pInt[0] を単純な整数 (int a = 0; p->GetVal(a)) に置き換えるとエラーがなくなることです。