Merhaba ben derleyici hatası (hata Microsoft Visual Studio 2008 dan) ile bu kodu vardır:ve "kapsam çözünürlük" "adresi" C++ operatörlerin önceliği hakkında bir soru
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'
};
bu kod iken ücretsiz hatası: :: & göre daha yüksek bir önceliğe sahip olduğundan
class B
{
protected:
int b;
};
class A : public B
{
public:
void foo(){ &(B::b); }
};
iki snippet'lar
, operatörlerin öncelik benim bilgiye dayalı bana denk görünüyor (Müşterek Taarruz Uçağı" sayfa 137 de örnek tabloda 2 için bkz SİSTEM GELİŞTİRME İÇİN HAVA ARACI C++ KODLAMA STANDARTLARI A ND DEMONSTRATION PROGRAMI " http://www2.research.att.com/~bs/JSF-AV-rules.pdf)Fakat bunlar farklı ..." Veriye işaret eden üye "ile ilgili bir şey olduğunu düşünüyorum, ancak işlevsellik önceliğine nasıl uyduğunu bilmiyorum.
Herhangi bir açıklama?
Eğer işaretçi-için-üyeB::b
adresini alıyorsun İlk durumda, Alessandro
Önceliği yanlış olsaydı, o zaman kesinlikle (farklı) bir sözdizimi hatası olur mu? – Flexo
Farkı dikkat edin: 'int * i = & (A :: b);' ancak int ::: m = &A::b; '&A::b;' –