/* ex_5_3.c++ */ #include #include using namespace std; /* *** identifiable *** */ class identifiable { string article; protected: void set_genre(const int&); string get_article() const { return article; }; public: virtual string get_identification() const = 0; }; void identifiable::set_genre(const int& genre) { switch (genre) { case 1: article = "Un "; break; case 2: article = "Une "; break; default: article = ""; } } /* *** utile *** */ class utile { public: virtual string get_fonction() const = 0; }; /* *** objet *** */ class objet : public identifiable, public utile { string nom, fonction; public: objet(string n, string f, int genre); string get_identification () const { return (get_article() + nom); }; string get_fonction () const { return fonction; }; }; objet::objet(string n, string f, int genre=0) : nom(n), fonction(f) { set_genre(genre); } /* *** main *** */ int main (void) { // identifiable i; // provoque une erreur à la compilation objet o("balle", "rebondit", 2); string verite = o.get_identification(); verite += " "; verite += o.get_fonction(); verite += "."; cout << verite << endl; return 0; }