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
RubricaTelefonica.hcodice:#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.cppcodice:#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
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
quando faccio Compila&Esegui, la schermata appare ed immediatamente scompare, e facendo man mano le opportune cancellazioni ho capito che il problema è legato acodice:#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; }
Qualcuno sa spiegarmi come mai? cosa c'è di sbagliato in questo metodo?codice:Rubrika->Aggiungi_Nominativo(Persona);




Rispondi quotando