//Attributo: Attr.h // Definizione delle classi Attributo, AttrGenere, AttrTaglia, AttrColore, AttrModello #ifndef ATTR_H #define ATTR_H class Attributo { // Classi che posseggono attributi friend class Capo; friend class Cintura; friend class Vestiario; public: // Tipi di attributo - definizione di tipo enum tipo_t { genere, taglia, colore, modello }; private: tipo_t tipo; // Tipo di questo attributo char *valore; // Valore dell'attributo protected : int operator != (const Attributo &a); // Operatore di confronto int operator == (const Attributo &a) { return !operator != (a); }; // Operatore di confronto void changestr (char *s); // Cambia il valore (solo per taglia) char * const val () { return valore; }; // Ritorna il valore public: Attributo (const tipo_t t, const char *val); // Costruttore con parametri Attributo (const Attributo &a); // Costruttore per copia ~Attributo (); // Distruttore }; class AttrGenere : public Attributo { public: AttrGenere (const char *val) : Attributo (genere , val) {}; }; class AttrTaglia : public Attributo { public: AttrTaglia (const int val); }; class AttrColore : public Attributo { public: AttrColore (const char *val) : Attributo (colore , val) {}; }; class AttrModello : public Attributo { public: AttrModello (const char *val) : Attributo (modello , val) {}; }; #endif