Witam, jestem początkującym w C++. Próbuję napisać program, który będzie mi liczyć powierzchnię użytkową dla różnego rodzaju obiektów (domku rodzinnego, biurowca). Na początek postanowiłem zacząć od bardzo prostego kodu jednak już na tym etapie mam pewien problem.
Mam 3 klasy: Budynek, Dom_jednorodzinny, Biurowiec. Wszystkie są w osobnych plikach .h i .cpp. Klasa Budynek jest klasą abstrakcyjną, po której dziedziczą pozostałe. Problem siedzi w inkludach: w pliku dom_jednorodzinny.h jest #include "budynek.h", tak samo jak w pliku biurowiec.h. Potem w dom_jednorodzinny.cpp jest #include "dom_jednorodzinny.h", a w biurowiec.cpp jest #include "biurowiec.h". W main.cpp kolei zainkludowałem: #include "dom_jednorodzinny.h" i #include "biurowiec.h".
Kiedy startuję program pojawia się problem: "error: redefinition of 'class Budynek'" i "error: previous definition of 'class Budynek'". Poniżej kod wszystkich plików:
budynek.h:
#include <iostream>
using namespace std;
class Budynek
{
protected:
double metraz;
double wysokosc;
double wymiar_a;
double wymiar_b;
double ilosc_pieter;
public:
virtual double policz_powierzchnie_uzytkowa() = 0;
};
dom_jednorodzinny.h:
#include <iostream>
#include "budynek.h"
using namespace std;
class Dom_jednorodzinny : public Budynek
{
public:
virtual double policz_powierzchnie_uzytkowa();
};
dom_jednorodzinny.cpp:
#include <iostream>
#include "dom_jednorodzinny.h"
using namespace std;
double Dom_jednorodzinny::policz_powierzchnie_uzytkowa()
{
cout << "Licze powierzchnie uzytkowa domu jednorodzinnego..." << endl;
return 3.14;
}
biurowiec.h:
#include <iostream>
#include "budynek.h"
using namespace std;
class Biurowiec : public Budynek
{
public:
virtual double policz_powierzchnie_uzytkowa();
};
biurowiec.cpp:
#include <iostream>
#include "biurowiec.h"
using namespace std;
double Biurowiec::policz_powierzchnie_uzytkowa()
{
cout << "Licze powierzchnie uzytkowa biurowca..." << endl;
return 6.28;
}
main.cpp:
#include <iostream>
#include "dom_jednorodzinny.h"
#include "biurowiec.h"
using namespace std;
int main()
{
cout << "Zaczynamy!" << endl;
Budynek *wsk_b1;
Dom_jednorodzinny domek;
Biurowiec budynek_biurowy;
wsk_b1 = &domek;
wsk_b1->policz_powierzchnie_uzytkowa();
wsk_b1 = &budynek_biurowy;
wsk_b1->policz_powierzchnie_uzytkowa();
return 0;
}
Z góry dziękuję za pomoc :)