Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    116

    costruttore in c++

    Ciao a tutti, ho una questione disperata che non riesco a risolvere:
    non capisco perchè il compilatore g++ (quando cerco di compilare con
    g++ Cliente.cpp -o Cliente) mi ritorna questo errore :

    /tmp/ccIHzAMZ.o(.text+0x25): In function `main':
    : undefined reference to `Cliente::Cliente[in-charge]()'
    /tmp/ccIHzAMZ.o(.text+0x62): In function `main':
    : undefined reference to `Cliente::~Cliente [in-charge]()'
    /tmp/ccIHzAMZ.o(.text+0x7f): In function `main':
    : undefined reference to `Cliente::~Cliente [in-charge]()'
    collect2: ld returned 1 exit status


    Ecco il file Cliente.h
    codice:
    class Cliente{
    	public:
    
    		Cliente();
    		~Cliente();
    };
    Ecco il file Cliente.cpp
    codice:
    #include <iostream.h>
    #include "Cliente.h"
    
    main( ){
    
    	Cliente c;
    
    cout << " prova" << endl;
    
    }
    Qualcuno mi potrebbe aiutare per favore?

  2. #2
    Utente di HTML.it L'avatar di Mods
    Registrato dal
    Jun 2004
    Messaggi
    302
    devi definire sia il costruttore ed il distruttore. nn puoi lasciarli in sospeso.

    public Cliente::Cliente(){};
    public Cliente::~Cliente(){};
    Ci sono 10 tipi di persone al mondo: quelli che conoscono il codice binario, e quelli che non lo conoscono!

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    116
    grazie!!!!
    Adesso funziona!
    Non avevo messo le graffe dopo il costruttore e il distruttore!

    A buon rendere! :-)

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    116

    Altro problema...

    Ho trovato un problema analogo al precedente ma le cause sono diverse:

    Ho una classe CodaFifo che eredita dalla superclasse Lista.
    In Lista c'è il metodo cancella():

    Ecco Lista.h:
    codice:
    #include "Cella.h"
    
    class Lista{
    
    public:
    	
    	Cella* head; // inizio della lista
    	Cella* last; // fine della lista
    	int nOggetti;// numero di oggetti presenti nella lista
    	
    	Lista(){
    		
     		head = NULL;
    		last = NULL;
    		nOggetti = 0;
    	}
    	~Lista(){}
    	
    	//void inserisci(Nodo n);// inserisce un nodo nella lista
    	void cancella();// cancella il nodo in testa alla lista	
    
    };
    E il relativo file cpp (Lista.cpp) è:

    codice:
    #include <iostream.h>
    #include "Lista.h"
    
    
    // cancella il nodo in testa alla lista
    void Lista::cancella(){
    
    	cout << " sto cancellando " << endl;
    	if(nOggetti == 1){ // se e' l'unico elemento
    		this->head = NULL;
    	}else{
    		this->head = this->head.next;	
    	}
    	nOggetti--;
    }

    Nel main del file CodaFifo.cpp
    faccio una chiamata al metodo cancella di Lista
    applicato a un oggetto della classe CodaLifo:

    codice:
    main(){
    	Nodo n1,n2,n3;
    	n1 = Nodo(1,2,3);
    	n2 = Nodo(22,37,5);
    
    	CodaFifo l;
    
    	l.inserisci(n1); cout << l.head->n.q1 << " " << l.nOggetti << endl;
    	l.inserisci(n2); cout << l.head->n.q1 << " " << l.nOggetti << endl;
    	
     	l.cancella(); 
    	
    	//cout << l.head->n.q1 << " " << l.nOggetti << endl;
    	 
    	
    }
    Compilando con g++ CodaFifo.cpp -o CodaFifo ottengo il seguente errore:

    /tmp/ccUpaM0L.o(.text+0x2ef): In function `main':
    : undefined reference to `Lista::cancella()'
    collect2: ld returned 1 exit status


    Se ora modifico il file Lista.h mettendo al posto di
    void cancella(); void cancella(){}
    cioè ho aggiunto le parentesi graffe al posto del ;
    ottengo che il compilatore non genera più errori tuttavia
    non esegue il codice di cancella() (ad esempio non stampa
    la stringa "sto cancellando" che è la prima istruzione di
    cancella() ).

    Qualcuno mi può aiutare per favore?

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    11
    Probabilmente perché non stai linkando Lista.o ,prova così:
    g++ CodaFifo.cpp Lista.cpp -o CodaFifo

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    116
    TI RINGRAZIO ORA FUNZIONA!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.