C++, problem przy kompilacji

Witam. Uczę się programować i najwyraźniej coś przeoczyłem i nie mogę odszukać co, chociaż juz edytowałem kod kilka razy dalej nie wiem gdzie tkwi problem. Domyślam się, żę to coś małego i pewnie dla niektórych śmiesznego, ale chce się uczyć, więc proszę o wyrozumiałość. Z góry dzięki za zainteresowanie i pomoc.

Program pisze w QT, pod linuxem(xubuntu), składa się z 3 plików składowych: main.cpp, pojazdy.h, pojazdy.cpp.

Błedy:

/home/computer/qt/test-build-desktop-Qt_4_8_1_w_PATH__System__Release/main.o:-1: In function `main’:

(.text.startup+0x2c):-1: błąd:undefined reference to `Ccar::Ccar(unsigned int, unsigned int)’

(.text.startup+0x61):-1: błąd:undefined reference to `Cairplane::Cairplane(unsigned int, unsigned int)’

:-1: błąd:collect2: ld returned 1 exit status

main.cpp

#include 

#include "pojazdy.h"


using namespace std;


int main()

{

    Ivehicle* cos;

    cos = new Ccar(290,1000);

    cos->showDate();

    delete cos;


    cos = new Cairplane(750,2500);

    cos->showDate();

    delete cos;



        return 0;

}

pojazdy.h

#ifndef POJAZDY_H

#define POJAZDY_H


class Ivehicle{

    protected:

    unsigned int maxSpeed;

    public:

    virtual void showDate();

};


class Ccar : public Ivehicle{

    protected:

    unsigned int maxRange;

    public:

    Ccar(unsigned int maxSpeed, unsigned int maxRange);

    void showDate();

};


class Cairplane : public Ivehicle{

    protected:

    unsigned int maxCeiling;

    public:

    Cairplane(unsigned int maxSpeed, unsigned int maxCeiling);

    void showDate();

};


#endif // POJAZDY_H

pojazdy.cpp

#include 


class Ivehicle{

    protected:

    unsigned m_maxSpeed;

    public:

    virtual void showDate(){}

};


class Ccar : public Ivehicle{

    protected:

    unsigned int m_maxRange;

    public:

    Ccar(unsigned int maxSpeed, unsigned int maxRange)

    {

        m_maxSpeed=maxSpeed;

        m_maxRange=maxRange;

    }

    void showDate()

    {

        std::cout << "\nMax. Szybkosc: " << m_maxSpeed << "\nMax. Zasieg: " << m_maxRange << "\n\n";

    }

};


class Cairplane : public Ivehicle{

    protected:

    unsigned m_maxCeiling;

    public:

    Cairplane(unsigned maxSpeed, unsigned maxCeiling)

    {

        m_maxSpeed=maxSpeed;

        m_maxCeiling=maxCeiling;

    }

    void showDate()

    {

        std::cout << "\nMax. Szybkosc: " << m_maxSpeed << "\nMax. Wysokosc: " << m_maxCeiling << "\n\n";

    }

};

Niepotrzebnie/błędnie redeklarujesz klasy w pojazdy.cpp. Nagłówki służą do deklaracji rzeczy, natomiast pliki cpp do definicji. Powinieneś więc w pojazdy.cpp zawrzeć jedynie ciała konstruktorów i metod, nie całych klas.

Do zamknięcia. Przerobiłem miałem dalej błędy, ale z nimi się uporałem i działa :slight_smile: . Dziękuje bardzo za pomoc !!