class Persona { protected: string nome; string cognome; public: void firma() { cout << "Persona: " << nome << " " << cognome << endl; } }; class Dipendente : virtual public Persona { double stipendio; public: void firma() { cout << "Dipendente: " << nome << " " << cognome << endl; } }; class Coordinatore : public Dipendente { string gruppo; public: void firma() { cout << "Coordinatore: " << nome << " " << cognome << endl; } }; class Azionista : virtual public Persona { double quote; public: void firma() { cout << "Azionista: " << nome << " " << cognome << endl; } }; class Dirigente : public Coordinatore, public Azionista { string dipartimento; public: void foo() { Azionista::firma(); cout << Coordinatore::Dipendente::Persona::nome; cout << Azionista::Persona::nome; } };