Problem z dziedziczeniem

0

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 of class 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

0

google: strażnik nagłówka

0

Poza tym możesz swój destruktor zrobić wirtualnym. http://www.parashift.com/c++-faq-lite/virtual-functions.html#faq-20.7
No i Osoba nie jest abstrakcyjna w tym momencie: http://www.parashift.com/c++-faq-lite/abcs.html#faq-22.3

0

Działa, kocham Was <3

Dzieki

1 użytkowników online, w tym zalogowanych: 0, gości: 1