sunsetting
Witamm
Moze odrazu przejde do rzeczy, podaje ody zrodlowe.
Kod 1.
Kod: #ifndef OSOBA_H
#define OSOBA_H
//-----------------------------
// PLik: osoba.h
//-----------------------------
#include <iostream>
using namespace std;
class osoba
{
char nazwisko[80];
int wiek;
public:
void zapamietaj(const char * napis, int lata);
void wypisz()
{
cout<<"\t"<<nazwisko<<", lat"<<wiek<<endl;
}
};
#endif
Kod 2.
Kod: //-------------------------------
// Plik: osoba.cpp
//-------------------------------
#include "osoba.h"
#include <cstring>
void osoba::zapamietaj(const char * napis, int lata)
{
strcpy(nazwisko,(napis ? napis:"Anonim"));
wiek = lata;
}
Kod 3.
Kod: #ifndef BILET_H_
#define BILET_H_
//---------------------------------
//PLik: bilet.h
//---------------------------------
class bilet
{
public:
enum rodzaj_pociagu{
osobowy, przyspieszony, pospieszny, ekspres};
void zapamietaj(const char* sk,
const char * dok,
rodzaj_pociagu poc,
int kl = 2);
void zmien_rodzaj_pociagu(rodzaj_pociagu poc);
void wypisz();
private:
char skad[80];
char dokad[80];
int klasa;
rodzaj_pociagu jaki_pociag;;
const char * opis_rodzaju();
};
inline void bilet::zmien_rodzaj_pociagu(rodzaj_pociagu poc)
{
jaki_pociag = poc;
}
#endif
Kod 4.
Kod: //------------------------
// Plik: bilet.cpp
//------------------------
#include "bilet.h"
#include <iostream>
using namespace std;
#include <cstring>
void bilet::zapamietaj(const char* sk, const char * dok, rodzaj_pociagu poc, int kl)
{
strcpy(skad, (sk ? sk:"Brak danych"));
strcpy(dokad, (dok ? dok:"Brak danych"));
jaki_pociag = poc;
klasa = kl;
}
void bilet::wypisz()
{
char kreska[] = "[-------------------------]\n";
char brzegi[] = "[ ]\r[";
cout<<kreska<<brzegi<<"Bilet: "<<skad<<" --> "<<dokad
<<", klasa"<<klasa<<"\n"<<brzegi<<" na pociag"<<opis_rodzaju()<<"\n"
<<kreska;
}
const char *bilet::opis_rodzaju()
{
const char *nazwy[] = {"osobowy (lub regionalny)",
"przyspieszony(lekko)",
"pospieszny",
"InterCity ekspres"
};
return nazwy[jaki_pociag];
}
Kod 5.
Kod: ///////////////////////////////////////////////////////////
// Plik drugi.cpp
///////////////////////////////////////////////////////////
#include <iostream>
#include <conio.h>
using namespace std;
#include "bilet.h"
void funkcja_w_innym_pliku()
{
cout<<"\nJestesmy w innym pliku programu, \ntu tez uzywamy biletow\n";
bilet bialy;
bialy.zapamietaj("Krakow", "Tarnow", bilet::osobowy);
bialy.wypisz();
cout<<"Spieszy sie nam, zmieniamy bilet na taki: "<<endl;
bialy.zmien_rodzaj_pociagu(bilet::pospieszny);
bialy.wypisz();
}
Kod 6 (glowny):
Kod: //-------------------------------------------------
// Plik pierwszy_plik.cpp
//-------------------------------------------------
#include <iostream>
#include <conio.h>
using namespace std;
#include "osoba.h"
#include "bilet.h"
void prezentacja(osoba);
void funkcja_w_innym_pliku();
int main()
{
osoba kompozytor, autor;
kompozytor.zapamietaj("Fryderyk Chopin", 36);
autor.zapamietaj("Marcel Proust", 34);
prezentacja(kompozytor);
prezentacja(autor);
cout<<"\nUzywamy w tym pliku tez klasy 'bilet'\n";
bilet zolty, niebieski;
zolty.zapamietaj("Frankfurt", "Paris", bilet::ekspres, 1);
zolty.wypisz();
niebieski.zapamietaj("Zurich", "Genewa", bilet::przyspieszony);
niebieski.wypisz();
niebieski.zmien_rodzaj_pociagu(bilet::pospieszny);
cout<<"\nPo zmianie tego biletu ..\n";
niebieski.wypisz();
funkcja_w_innym_pliku();
_getch();
return 0;
}
void prezentacja(osoba ktos)
{
cout<<"Mam zaszczyt przedstawic pasnstwu, \nOto we wlasnej osobie: ";
ktos.wypisz();
}
Gdy kompiluje ostatnia czesc wyskakuja mi bledy tresci:
Cytat: C:\DOCUME~1\Spec\USTAWI~1\Temp\cc8ubaaa.o(.text+0x14a) In function `main':
[Linker error] undefined reference to `osoba::zapamietaj(char const*, int)'
[Linker error] undefined reference to `osoba::zapamietaj(char const*, int)' [Linker error] undefined reference to `bilet::zapamietaj(char const*, char const*, bilet::rodzaj_pociagu, int)'
[Linker error] undefined reference to `bilet::wypisz()'
[Linker error] undefined reference to `bilet::zapamietaj(char const*, char const*, bilet::rodzaj_pociagu, int)'
[Linker error] undefined reference to `bilet::wypisz()'
[Linker error] undefined reference to `bilet::wypisz()'
[Linker error] undefined reference to `funkcja_w_innym_pliku()'
C:\DOCUME~1\Spec\USTAWI~1\Temp\cc8ubaaa.o(.text+0x14a) ld returned 1 exit status
Moglby mi ktos powiedziec o co tu chodzi?
Kod:
C:\code\tmp>g++ -c osoba.cpp
C:\code\tmp>g++ -c bilet.cpp
C:\code\tmp>g++ -c drugi.cpp
C:\code\tmp>g++ -c main.cpp
C:\code\tmp>g++ main.o drugi.o bilet.o osoba.o -o main.exe
C:\code\tmp>dir | find "main.exe"
2009-12-22 11:35 480 221 main.exe
...