Ho il seguente codice:Impossibile accedere membro protetto della classe base in classe derivata
struct A {
protected:
A() {}
A* a;
};
struct B : A {
protected:
B() { b.a = &b; }
A b;
};
E stranamente non compilazione. Il colpevole è il compito b.a = &b;
: sia GCC che clang si lamentano che A()
è protetto, il che non dovrebbe essere un problema perché B eredita A. Quale angolo oscuro dello standard sono entrato?
È possibile accedere solo ai membri 'protetti' di' this' 'base (stessa istanza). 'this' e' b' non sono la stessa istanza. – jrok
@MikeSeymour no. (ma ammetto di aver pensato la stessa identica cosa fino a poco tempo fa) –
Sono sicuro che questo è stato chiesto molte volte prima, ma è difficile individuare il duplicato esatto. – dasblinkenlight