¿Por qué una clase derivada no puede acceder a un miembro protegido de su clase base a través de un puntero a base?
Este es elcódigo:
class TestA
{
protected:
int test=12;
public:
TestA() {
cout << "test a: " << test << endl;
}
~TestA() {
}
};
class TestB : public TestA
{
public:
TestB(TestA *testA) {
cout << "test b: " << testA->test;
}
~TestB() {
}
};
int main ()
{
TestA *pTestA=new TestA();
TestB *pTestB=new TestB(pTestA);
}
Estoy tratando de acceder a unprotected
miembro utilizando un puntero que apunta a unTestA
tipo objeto (por lo tanto, una instancia deTestA
)TestB
también se deriva deTestA
¿Por qué no puedo acceder a él? ¿Es accesible solo "dentro" de la clase donde lo necesito? No fuera usando puntero / declaraciones directas?