Witam
Mam następujący problem:
Mam za zadanie napisać prosty program, który będzie się opierał na dziedziczeniu. Klasa główna to Osoba(ma być abstrakcyjna), klasa dziedzicząca po niej to Pacjent. U mnie poszczególnie pliki wyglądają tak:
Osoba.h
#include <iostream>
class Osoba
{
private:
int wiek;
public:
Osoba();
~Osoba();
virtual void przedstawienie();
int getWiek();
void setWiek();
};
Osoba.cpp
#include <iostream>
#include "Osoba.h"
Osoba::Osoba(){
wiek = 0;
}
Osoba::~Osoba()
{
cout << "Destruktor Osoby" << endl;
}
void Osoba::przedstawienie()
{
cout << "Jestem Osoba i mam " << getWiek() << " lat." << endl;
}
int Osoba::getWiek()
{
return wiek;
}
void Osoba::setWiek(int age)
{
wiek = age;
}
Pacjent.h
#include <iostream>
#include "Osoba.h"
class Pacjent : public Osoba
{
private:
int PESEL;
public:
Pacjent();
~Pacjent();
void przedstawienie();
int getWiek();
void setWiek();
void setPESEL();
int getPESEL();
};
Pacjent.cpp
#include <iostream>
#include "Pacjent.h"
Pacjent::Pacjent() : Osoba()
{
PESEL = 0;
}
Pacjent::~Pacjent()
{
cout << "Destruktor Pacjenta" << endl;
}
void Pacjent::przedstawienie()
{
cout << "Jestem pacjentem w wieku " << getWiek() << " lat i PESELu " << getPesel() << "." << endl;
}
int Pacjent::getWiek()
{
return Osoba::getWiek();
}
void Pacjent::setWiek(int age)
{
Osoba::setWiek(age);
}
void Pacjent::getPESEL(){
return PESEL;
}
Main.cpp
#include <cstdlib>
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include "funkcje.h"
#include "Pacjent.h"
using namespace std;
int main(int argc, char *argv[])
{
Osoba * kolekcja[20];
for(int ile=0; ile<20; ile++)
kolekcja[ile] = NULL;
dodaj_osobe(kolekcja[0]);
dodaj_pacjenta(kolekcja[1]);
wypisz(kolekcja);
getch();
return 0;
}
Przy próbie kompilacji wywala mi następujący błąd:
7 C:\Dev-Cpp\Pacjent.h:2, from main.cpp In file included from Pacjent.h:2, from main.cpp
4 C:\Dev-Cpp\Osoba.h redefinition ofclass Osoba' 4 C:\Dev-Cpp\Osoba.h previous definition of
class Osoba'
Jedyne co sensownego udało mi się znaleźć żeby rozwiązać mój problem to sugestia, żeby sprawdzić czy nie #include'uje wielokrotnie tych samych plików nagłówkowych. Jednak wydaje mi się, że to akurat mam zrobione poprawnie.
Bardzo proszę o pomoc