Ragazzi ho un problema con una gerarchia di classi ; questo è il codice
Nel main non mi fa istanziare una variabile del tipo "lotto1 l1" dando il seguente errorecodice:#ifndef PRODOTTO_H_ #define PRODOTTO_H_ #include <iostream> #include <string> using namespace std; class prodotto{ private: char* codice; char* descrizione; float costounitario; public: prodotto(const char *c="",const char *d="",const float cu=0.0) {codice=new char[strlen(c)+1];strcpy(codice,c);descrizione=new char[strlen(d)+1];strcpy(descrizione,d);costounitario=cu;} prodotto(const prodotto &); const prodotto & operator=(const prodotto &); virtual const string get_tipo()=0; virtual ~prodotto(){delete [] codice; delete [] descrizione;} const char* get_codice()const {return codice;} const char* get_descrizione() const {return descrizione;} float get_constounitario()const {return costounitario;} void set_codice(const char* CO) {delete[]codice;codice=new char[strlen(CO)+1];strcpy(codice,CO);} void set_descrizione(const char* DE) {delete[]descrizione;descrizione=new char[strlen(DE)+1];strcpy(descrizione,DE);} void set_costounitario(const float CU){costounitario=CU;} }; #endif #ifndef LOTTO1_H_ #define LOTTO1_H_ #include "prodotto.h" #include <iostream> #include <string> using namespace std; class lotto1:public prodotto{ private: const string tipo; int maxnum; public: lotto1(const string t="lotto1",const int m=0) {maxnum=m;} virtual const string get_tipo()const {return tipo;} int get_maxnum() const {return maxnum;} void set_maxnum(int MN) {maxnum=MN;} }; #endif #ifndef LOTTO2_H_ #define LOTTO2_H_ #include "lotto1.h" #include <iostream> #include <string> using namespace std; class lotto2:public prodotto{ private: const string tipo; float minimp; public: lotto2(const string t="lotto2",const float mi=0.0) {minimp=mi;} virtual const string get_tipo()const {return tipo;} float get_minimp()const {return minimp;} void set_minimp(const float MI) {minimp=MI;} }; #endif
allora se esiste una funzione virtuale pura in una classe la classe diventa astatta e non è possibile istanziare oggetti mentre è possibile istanziare oggetti per le classi derivate. Io nel main voglio istanziare un oggetto del tipo lotto1 e non me lo fa fare, come mai?Grazie mille per la rispostacodice:cannot declare variable `l1' to be of type `lotto1' because the following virtual functions are abstract: 21 virtual const std::string prodotto::get_tipo()

Rispondi quotando