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?