sunsetting

photo

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

...
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • kazimierz.htw.pl