Salve a tutti, mi sto esercitando per un esame all'università, e stavo cercando di implementare una rubrica telefonica mediante lista.

Ecco i file

Nominativo.h

codice:
#ifndef _NOMINATIVO_H_
#define _NOMINATIVO_H_

class Nominativo
{
      protected:
                char* nome;
                char* cognome;
                char* numeroTelefono;
                Nominativo* successivo;
      public:
             /* COSTRUTTORI */
             Nominativo();                      // default
             ~Nominativo();                     // distruttore
             
             /* Metodi di Set proprietà */
             void setNome(char*);
             void setCognome(char*);
             void setNumeroTelefono(char*);
             void setSuccessivo(Nominativo*);
             
             /* Metodi di Get proprietà */
             char* getNome(void);
             char* getCognome(void);
             char* getNumeroTelefono(void);
             Nominativo* getSuccessivo(void);
             
};
#endif

Nominativo.cpp

codice:
#include <iostream>
#include "Nominativo.h"

Nominativo::Nominativo()
{
}

Nominativo::~Nominativo()
{
    delete nome;
    delete cognome;
    delete numeroTelefono;
    delete successivo;
}

void Nominativo::setNome(char* pNome)
{
    nome = pNome;
}

void Nominativo::setCognome(char* pCognome)
{
    cognome = pCognome;
}

void Nominativo::setNumeroTelefono(char* pNumeroTelefono)
{
    numeroTelefono = pNumeroTelefono;
}

void Nominativo::setSuccessivo(Nominativo* pSuccessivo)
{
    successivo = pSuccessivo;
}

char* Nominativo::getNome(void)
{
    if(nome != NULL)
        return nome;
}

char* Nominativo::getCognome(void)
{
    if(cognome != NULL)
        return cognome;
}

char* Nominativo::getNumeroTelefono(void)
{
    if(numeroTelefono != NULL)
        return numeroTelefono;
}

Nominativo* Nominativo::getSuccessivo(void)
{
    return successivo;
}
RubricaTelefonica.h

codice:
#ifndef _RUBRICATELEFONICA_H_
#define _RUBRICATELEFONICA_H_
#include "Nominativo.h"

class RubricaTelefonica
{
      public:
             /* COSTRUTTORI */
             RubricaTelefonica();                       // default
             //RubricaTelefonica(RubricaTelefonica&);   // copia
             ~RubricaTelefonica();                      // distruttore
             
             /* PROPRIETA' */
             Nominativo* primoNominativo;               // il puntatore al primo elemento della rubrica
             Nominativo* ultimoNominativo;              // il puntatore all'ultimo elemento della rubrica
             
             /* METODI */
             void Aggiungi_Nominativo(Nominativo);      // aggiunge un nuovo nominativo alla rubrica
             
             void StampaaVideo(void);
};

#endif
RubricaTelefonica.cpp

codice:
#include <iostream>
#include "RubricaTelefonica.h"
using namespace std;

/* Default */
RubricaTelefonica::RubricaTelefonica()
{
    primoNominativo = NULL;
    ultimoNominativo = NULL;
}

/* Distruttore */
RubricaTelefonica::~RubricaTelefonica()
{
    delete primoNominativo;
    delete ultimoNominativo;
}

void RubricaTelefonica::Aggiungi_Nominativo(Nominativo nuovoNominativo)
{
     Nominativo* nuovoNodo = new Nominativo;
     
     nuovoNodo->setNome(nuovoNominativo.getNome());
     nuovoNodo->setCognome(nuovoNominativo.getCognome());
     nuovoNodo->setNumeroTelefono(nuovoNominativo.getNumeroTelefono());
     nuovoNodo->setSuccessivo(primoNominativo); 
     
     primoNominativo = nuovoNodo;
}

void RubricaTelefonica::StampaaVideo(void)
{
    Nominativo* Nodo = primoNominativo;
    
    while(Nodo != NULL){
        cout << "COGNOME: " << Nodo->getCognome() << endl;
        cout << "NOME: " << Nodo->getNome() << endl;
        cout << "TELEFONO: " << Nodo->getNumeroTelefono() << endl;
        cout << endl;
    }
}

Usando il seguendo main

codice:
#include <iostream>
#include "RubricaTelefonica.h"

using namespace std;

int main(int argc, char *argv[])
{   
    Nominativo Persona;
    RubricaTelefonica* Rubrika = new RubricaTelefonica;

    Persona.setCognome("Baudo");
    Persona.setNome("Giuseppe");
    Persona.setNumeroTelefono("3331234567");

    Rubrika->Aggiungi_Nominativo(Persona);
    Rubrika->StampaaVideo();

    system("PAUSE");
    return EXIT_SUCCESS;
}
quando faccio Compila&Esegui, la schermata appare ed immediatamente scompare, e facendo man mano le opportune cancellazioni ho capito che il problema è legato a

codice:
Rubrika->Aggiungi_Nominativo(Persona);
Qualcuno sa spiegarmi come mai? cosa c'è di sbagliato in questo metodo?