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()
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;
}
cosa sbaglio?