こんにちは、次のコードにコンパイラ エラーがあります (エラーは Microsoft Visual Studio 2008 のものです)。
class B {
protected:
int b;
};
class A : public B {
public:
void foo() { &B::b; }
// error C2248: 'B::b' : cannot access protected member declared in class 'B'
};
このコードにはエラーがありません:
class B {
protected:
int b;
};
class A : public B {
public:
void foo() { &(B::b); }
};
::
演算子の優先順位に関する私の知識に基づいて、2 つのスニペットは同等に思え&
ます。 )
しかし、それらは異なります...「データメンバーへのポインター」に関連するものだと思いますが、演算子の優先順位にどのように適合するかわかりません。
説明はありますか?