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?

questionAnswers(2)

yourAnswerToTheQuestion