Pliki nagłówkowe dołączone a klasy nadal siebie nie widzą

0

Jeden dzień straciłem już na rozwiązywanie tego problemu więc teraz czekam na wasze sugestie.
Mam klasę firma będzie ona tworzona w main'ie.Klasa Firma posiada pole wskaźnik na klase Wydatki(w konstruktorze Firmy tworzę nową instancję klasy Wydatki na mój wskaźnik). W klasie Wydatki mam pole wskaźnik na klasę Firma i w konstruktorze chcę przypisać mu instancję klasy Firma.
Czyli ogólnie klasa Firma tworzy obiekt klasy Wydatki i przekazuje mu wskaźnik na samą siebie.
Niestety w pliku Wydatki.h w 8 lini(Firma* firmaWydatki) wyskakuje error

'Firma' does not name a type

Jedyne co mi przychodzi do głowy to, że includ'y jakoś się blokują ale próbowałem już je poprzestawiać i pousuwać na milion sposobów i nadal Wydatki nie widzą Firmy...

plik Firma.h

#ifndef FIRMA_H
#define FIRMA_H
#include <vector>
#include "Pracownik.h"
#include "Reklama.h"
#include "BadanieRynku.h"
#include "Wydatki.h"

class Firma
{
private:
    double aktualneWydatki_;
    double przychody_;
    double kapital_;
    double rozpoznawalnosc_;
    double iloscPracownikow_;
    double innowacyjnosc_;
    double szybkoscProdukcji_;
    double opinia_;
    std::vector<Pracownik*> listaPracownikow_;
    Reklama* reklama_;
    BadanieRynku* badanieRynku_;
    Wydatki* wydatki_;
public:
    Firma();
    ~Firma();
    void ZatrudnijPracownika(Pracownik* pracownik);
    void KupReklame(Reklama* reklama);
    void UsunReklame();
    void FunduszeNaBadanieRynku(BadanieRynku* badanieRynku);
    void UsunFunduszeNaBadanieRynku();
    void ZaktualizujRozpoznawalnosc(double rozpoznawalnosc);
    void ZaktualizujIloscPracownikow(double iloscPracownikow);
    void ZaktualizujSzybkoscProdukcji(double szybkoscProdukcji);
    void ZaktualizujInnowacyjnosc(double innowacyjnosc);
    void ZaktualizujOpinie(double opinia);
    void ZaktualizujAktualneWydatki();
};

plik Firma.cpp

#include "Firma.h"

Firma::Firma()
{
    aktualneWydatki_=0;
    przychody_=0;
    kapital_=0;
    rozpoznawalnosc_=0;
    iloscPracownikow_=0;
    innowacyjnosc_=0;
    szybkoscProdukcji_=0;
    opinia_=0;
    wydatki_ = new Wydatki(this);
}

Firma::~Firma()
{
    delete wydatki_;
    delete reklama_;
    delete badanieRynku_;

    std::vector<Pracownik*>::iterator i;
    i=listaPracownikow_.begin();
    for(i;i!=listaPracownikow_.end();++i)
    {
        delete *i;
    }

    delete this;
}
void Firma::ZatrudnijPracownika(Pracownik* pracownik)
{
    listaPracownikow_.push_back(pracownik);
}
void Firma::KupReklame(Reklama* reklama)
{
    reklama_=reklama;
}
void Firma::UsunReklame()
{
    delete reklama_;
}
void Firma::FunduszeNaBadanieRynku(BadanieRynku* badanieRynku)
{
    badanieRynku_=badanieRynku;
}
void Firma::UsunFunduszeNaBadanieRynku()
{
    delete badanieRynku_;
}
void Firma::ZaktualizujRozpoznawalnosc(double rozpoznawalnosc)
{

}
void Firma::ZaktualizujIloscPracownikow(double iloscPracownikow)
{

}
void Firma::ZaktualizujSzybkoscProdukcji(double szybkoscProdukcji)
{

}
void Firma::ZaktualizujInnowacyjnosc(double innowacyjnosc)
{

}
void Firma::ZaktualizujOpinie(double opinia)
{

}
void Firma::ZaktualizujAktualneWydatki()
{
    
}

#endif // FIRMA_H

plik Wydatki.h

#ifndef WYDATKI_H
#define WYDATKI_H
#include "Firma.h"

class Wydatki
{
private:
    Firma* firmaWydatki;
public:
    Wydatki(Firma* firma);
    ~Wydatki();
    void Oblicz();
};

#endif // WYDATKI_H 

plik Wydatki.cpp

#include "Wydatki.h"
Wydatki::Wydatki(Firma* firma)
{
    firmaWydatki = firma;
}

Wydatki::~Wydatki()
{
    
}
void Wydatki::Oblicz()
{

} 
1

Musisz dorzucić forward deklarację class Firma; na przykład w Wydatki.h (lub przed includami w Firma.h).

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