Tengo el siguiente código:No se puede acceder miembro protegido de la clase base en la clase derivada
struct A {
protected:
A() {}
A* a;
};
struct B : A {
protected:
B() { b.a = &b; }
A b;
};
extrañamente no se compilará. El culpable es la asignación b.a = &b;
: tanto GCC como clang se quejan de que A()
está protegido, lo que no debería ser un problema porque B hereda A. ¿En qué esquina oscura del estándar he entrado?
Solo se puede acceder a los miembros 'protegidos' de' this' 'base (misma instancia). 'this' y' b' no son la misma instancia. – jrok
@MikeSeymour nope. (pero admito que pensé exactamente lo mismo hasta hace poco) –
Estoy seguro de que esto se ha preguntado muchas veces antes, pero es difícil encontrar el duplicado exacto. – dasblinkenlight