ho provato a fare un programma di esempio che usa le classi annidate, funziona tranne un metodo che fa uscire il programma con un errore, il programma viene compilato correttamente, evidentemente sbaglio a richiamare una variabile
quello che non funziona è setname()
cosa sbaglio?codice:#include <cstdlib> #include <iostream> using namespace std; class animali{ public: class cani; cani *cane; animali(); ~animali(); }; class animali::cani{ public: cani(); ~cani(); char nomecane[10]; void abbaia(void); void mordi(void); void mangia(char *tipocibo); void setname(char *nome); }; animali::animali(){ } animali::~animali(){ } animali::cani::cani(){ } animali::cani::~cani(){ } void animali::cani::abbaia(void){ cout << "BAU!" << endl; } void animali::cani::mordi(void){ cout << this->nomecane << " ti sta azzannando" << endl; } void animali::cani::mangia(char *tipocibo){ cout << this->nomecane << " sta mangiando " << tipocibo << endl; } void animali::cani::setname(char *nome){ strcpy(nomecane, nome); } int main(int argc, char *argv[]){ animali animale, *anim; animale.cane->setname("Pippo"); animale.cane->abbaia(); animale.cane->mordi(); animale.cane->mangia("Un Osso"); anim=new animali; anim->cane->setname("Rocky"); anim->cane->abbaia(); anim->cane->mordi(); anim->cane->mangia("Delle crocchette"); system("PAUSE"); return EXIT_SUCCESS; }


Rispondi quotando
