Erorre di compilazione: undefined reference

di il
10 risposte

Erorre di compilazione: undefined reference

Studiando da un libro, mi sono trovato questo pezzo di codice:

void Department::print() const{
	cout << "Name: " << name << "\n" << "Receptionist: ";
	if (receptionist == NULL)
		cout << "None";
	else
		cout << receptionist->get_name() << " "
			<< receptionist->get_salary();
	cout << "\n";
}
Io stavo facendo una mia versione, l ho fatta però mi da un errore, e non capisco cosa c'è di diverso dal codice che vi ho scritto sopra.

void Department::print() const{
	cout << "Department: " << name << endl;
	if(receptionist == NULL)
		cout << "There's no receptionist in this department";
	else
		cout << "receptionist: " << receptionist->get_name() << endl; // errore qui.

}
mi da l'errore: undefined reference to `Employee::get_name() const'

perchè? cosa c'è di diverso dal codice di sopra (il codice sopra non da errore).
Se vi serve tutto il programma, ditemelo che vi posto il sorgente.

10 Risposte

  • Re: Erorre di compilazione: undefined reference

    Dove sta il codice del metodo

    Employee::get_name()

    ?
  • Re: Erorre di compilazione: undefined reference

    Lo posto adesso, credevo non ce ne fosse bisogno visto che una versione va e l altra no.. cmq:

    Employee.h
    
    #ifndef EMPLOYEE_H_
    #define EMPLOYEE_H_
    
    #include <string>
    using namespace std;
    
    class Employee{
    
    public:
    	Employee(string name, double s);
    	string get_name() const;
    	double get_salary() const;
    	void set_salary(double new_salary);
    
    private:
    	string name;
    	double salary;
    
    };
    
    Employee.cpp
    
    #include "Employee.h"
    
    using namespace std;
    
    Employee::Employee(string name, double s){
    	this->name = name;
    	salary = s;
    }
    
    string Employee::get_name() const{
    	return name;
    }
    
    double Employee::get_salary() const{
    	return salary;
    }
    
    void Employee::set_salary(double new_salary){
    	salary = new_salary;
    }
    
  • Re: Erorre di compilazione: undefined reference

    Ah , c'è anche
    Deparmtent.h
    
    #ifndef DEPARTMENT_H_
    #define DEPARTMENT_H_
    #include "Employee.h"
    
    
    using namespace std;
    
    class Department{
    public:
    	Department (string name);
    	void set_receptionist(Employee* receptionist);
    	void set_secretary(Employee* secretary);
    	void print() const;
    private:
    	string name;
    	Employee* receptionist;
    	Employee* secretary;
    };
    
    
    #endif /* DEPARTMENT_H_ */
    
  • Re: Erorre di compilazione: undefined reference

    Ho compilato le due versioni senza errori.

    Posta il file Department.cpp completo.
  • Re: Erorre di compilazione: undefined reference

    
    #include "Department.h"
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    Department::Department(string n){
    	name = n;
    	secretary = NULL;
    	receptionist = NULL;
    }
    
    void Department::set_secretary(Employee* sec){
    	secretary = sec;
    }
    
    void Department::set_receptionist(Employee* rec){
    	receptionist = rec;
    }
    
    void Department::print() const{
    	cout << "Department: " << name << endl;
    	if(receptionist == NULL)
    		cout << "There's no receptionist in this department";
    	else
    		cout << "receptionist: " << receptionist->get_name() << endl;
    
    }
    
    int main(){
    	string dep_name = "Secondary school";
    	Department d = (dep_name);
    	d.print();
    }
    
    e mi da il solito errore sul get_name
  • Re: Erorre di compilazione: undefined reference

    Adesso mi da errore pure utilizzando questa versione
    
    void Department::print() const{
       cout << "Name: " << name << "\n" << "Receptionist: ";
       if (receptionist == NULL)
          cout << "None";
       else
          cout << receptionist->get_name() << " "
             << receptionist->get_salary();
       cout << "\n";
    }
    
    comincio a pensare che piu che il codice, sia qualcos' altro ad essere sbagliato
  • Re: Erorre di compilazione: undefined reference

    Continuo a compilare correttamente.

    Penso anch'io che il tuo problema stia da qualche altra parte.
  • Re: Erorre di compilazione: undefined reference

    Allora, io uso eclipse, e per programmare, creo un nuovo progetto e poi metto i miei file li dentro..
    Ora io ho messo in un progetto, il file employee.h , employee.cpp , department.h , department.cpp
    Forse l errore sta nel fatto che non posso avere due file .cpp nello stesso pregetto. Ti risulta?
  • Re: Erorre di compilazione: undefined reference

    Ehm.. è successo qualcosa di strano.. senza modificare nulla.. e ripeto nulla.. adesso funziona tutto senza errori.. buildato e runnato.. perchè? che cosa può essere il problema?
  • Re: Erorre di compilazione: undefined reference

    No, anzi, tutti i file sorgenti devono stare nello stesso progetto
Devi accedere o registrarti per scrivere nel forum
10 risposte