Por que uma classe derivada não pode acessar um membro protegido de sua classe base por meio de um ponteiro para a base?
Isto é ocó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);
}
Estou tentando acessar umprotected
membro usando um ponteiro apontando para umTestA
objeto de tipo (portanto, uma instância deTestA
)TestB
também é derivado deTestA
Por que não consigo acessar? É acessível apenas "dentro" da classe em que eu preciso? Não está usando declarações diretas / diretas?