Klasy. Undefined reference to ...

0

Witam,
Mam problem z przykładowym program z symfonii. Są 3 pliki, wszystkie w jednym katalogu:

  1. main.cpp
#include <iostream>
using namespace std; 

#include "osoba.h"										 
void prezentacja(osoba); 							
/*************************************************************/
int main() 
{ 
	osoba kompozytor, autor; 					
 
	kompozytor.zapamietaj("Fryderyk Chopin", 36); 
	autor.zapamietaj("Marcel Proust", 34); 
 
	// wywo³ujemy funkcje, wysy³aj¹c obiekty 
	prezentacja(kompozytor);							
	prezentacja(autor); 			 				
} 
/*************************************************************/
void prezentacja(osoba ktos) 							
{ 
	cout << "Mam zaszczyt przedstawic panstwu, \n"
				"Oto we wlasnej osobie: "; 
	ktos.wypisz(); 				
} 
  1. osoba.h
 #ifndef _osoba_h_                 				
#define _osoba_h_
#include <iostream>
using namespace std;
//////////////////   definicja klasy  /////////////////////////
class osoba 
{
     char nazwisko[80];                               
     int wiek;
public:                                               
     void zapamietaj(const char * napis, int lata);	
     //------------
     void wypisz()							

     {
          cout << "\t" << nazwisko << ", lat: "
               << wiek << endl;
     }
};
/////////////////// koniec definicji klasy ///////////////////
#endif
  1. osoba.cpp
 #include "osoba.h"
#include <cstring>
//*************************************************************
void osoba::zapamietaj(const char * napis, int lata)
{
     strcpy(nazwisko, (napis ? napis : "Anonim"));
     wiek = lata;
}

I przy próbie kompilacji wyskakuje błąd: undefined reference to 'osoba::zapamietaj(char const*, int)'. Co może być tego przyczyną ? Używam Code::Blocks i kompilatora GNU GCC.

0

Widocznie kompilujesz/linkujesz źle. Dodałeś wszystkie pliki do projektu czy one tylko tam "są"?

0

Tak, dodałem te pliki do projektu. Jeśli dodam w main.cpp

#include "osoba.cpp" 

to wszystko jest dobrze jednak czytałem, że nie powinno się dodawać plików *.cpp za pomocą include.

0

@emerk ech bo nie umiesz skompilować projektu złożonego z kilku plików. Zgaduje że korzystasz z jakiegoś IDE -> w takim razie stwórz nowy projekt i dodaj tam swoje pliki źródłowe a potem daj Build All.
Bo widzisz jak chcesz skompilować i zlinkować kilka plików to nie możesz kompilować tylko pliku z main...

1 użytkowników online, w tym zalogowanych: 0, gości: 1