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.
In particolare vorrei, dopo aver creato un'istanza di Struttura, poter aggiungere un'istanza di Compressione tramite addListaProprieta(compressione_1);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; };
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?codice:void Struttura::addListaProprieta(Proprieta proprieta) { this->lista_proprieta.push_back(proprieta); } std::list<Proprieta> Struttura::getListaProprieta() { return this->lista_proprieta; }
Grazie,
ciao.