//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