ciao, sto cercando di capire il corretto uso dei modificatori di accesso.
Il mio dubbio cade su protected. So che i metodi sarebbero visibili dagli oggetti delle sottoclassi e dall'oggetto stesso.

Inizialmente avevo messo protected entrambi i metodi della classe C, perchè vedo che sono richiamati dalla sottoclasse D. Ma così non compila.

Ho messo protected solo metodo1() e compila.

Qualcuno potrebbe spiegarmi perfavore perchè se nella classe C metto anche metodo() protected non compila ?

Nel main viene creato un oggetto g di tipo D che richiama metodo() della superclasse C, non riesco quindi a spiegarmi perchè non accetta il protected.

Grazie


codice:
class C
{
      public:
             void metodo(){};
      protected:
             void metodo1(){};
};



class D: public C
{
      void metodo2();
};



void D::metodo2(){metodo1();}



int main(int argc, char *argv[])
{
    D g;
    g.metodo();
    
    return 0;
}