Ciao a tutti.
Devo creare una classe Struttura che tra i vari metodi ne ha uno addListaProprieta che accetta, come argomento, un'altra classe. Quest'altra classe però è generica e ha delle classi figlie.
codice:
class Proprieta
{
public:
Proprieta();
void setNumero(unsigned int numero);
unsigned int getNumero();
private:
unsigned int numero;
};
class Compressione : public Proprieta
{
public:
Compressione();
void setTipo(char tipo);
char getTipo();
private:
char tipo;
};
class Struttura
{
public:
Struttura();
void setVersione(char* versione);
char* getVersione();
void addListaProprieta(Proprieta proprieta);
std::list<Proprieta> getListaProprieta();
private:
char* versione;
std::list<Proprieta> lista_proprieta;
};
In particolare vorrei, dopo aver creato un'istanza di Struttura, poter aggiungere un'istanza di Compressione tramite addListaProprieta(compressione_1);
codice:
void Struttura::addListaProprieta(Proprieta proprieta)
{
this->lista_proprieta.push_back(proprieta);
}
std::list<Proprieta> Struttura::getListaProprieta()
{
return this->lista_proprieta;
}
Mi è chiaro che deve esserci una relazione, oltre che quella di generalizzazione, tra la classe Proprieta e Compressione. Si utilizzano le classi astratte? Se si come? E nel caso posso comunque definire i metodi di Proprieta che poi saranno ereditati dalla classe Compressione? O li devo per forza definire in Compressione?
Grazie,
ciao.