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?