#include // version 1 : héritage multiple SANS classe virtuelle // =================================================== class unePersonne { protected: char* nom; public: unePersonne(char* n="une personne") : nom(n) {}; public: char* sonNom() { return nom; }; }; class unEtudiant : public unePersonne { protected: char* cursus; public: unEtudiant(char* n="un étudiant", char* c="un cursus") : unePersonne(n), cursus(c) {}; public: char* sonCursus() { return cursus; }; }; class unSportif : public unePersonne { protected: char* sport; public: unSportif(char* n="un sportif", char* s="un sport") : unePersonne(n), sport(s) {}; public: char* sonSport() { return sport; }; }; class unEtudiantSportif : public unEtudiant, public unSportif { public: unEtudiantSportif(char* n="un étudiant sportif", char* c="un cursus", char* s="un sport") : unEtudiant(n, c), unSportif(n, s) {}; // peut avoir 2 noms distincts : // unEtudiant::nom // unSportif::nom public: char* sonNom() { return unEtudiant::sonNom(); }; // ambiguïté à lever, puisque 2 méthodes sonNom() héritées // --> conflit de multiplicité };