class uneFigurePesante : public virtual uneFigure { protected: float densite; public: uneFigurePesante(float X, float Y, float d); protected: char* intitule_genre() const; virtual char* intitule_densite() const = 0; public: void se_decrire() const; virtual float poids(void) const; }; // ================================================ class uneFigurePlanePesante : public uneFigurePlane, public uneFigurePesante { public: uneFigurePlanePesante(float X, float Y, float d); protected: char* intitule_genre() const; char* intitule_densite() const; public: void se_decrire(void) const; public: // redéfinition de méthodes pour résoudre tous les // conflits de multiplicité char* intitule_taille() const { return uneFigurePlane::intitule_taille(); }; float taille(void) const { return uneFigurePlane::taille(); }; }; // ================================================ class unCerclePesant : public unCercle, public uneFigurePlanePesante { public: unCerclePesant(float X, float Y, float R, float D); public: char* intitule_genre() const; public: // redéfinition de méthodes pour résoudre tous les // conflits d'héritage float surface() const { return unCercle::surface(); }; void se_decrire() const { uneFigurePlanePesante::se_decrire(); }; };