У меня есть этот кусок кода
#ifndef STATION_H
#define STATION_H
#include <vector>
#include "Dispenser.h"
#include "Cashier.h"
//class Cashier;
class Station
{
private:
int price;
int dispenser_count;
int cashier_count;
std::vector<Dispenser> dispensers;
std::vector<Cashier> cashiers;
public:
Station(int, int, int);
int GetPrice() const { return price; }
Dispenser *LookForUnoccupiedDispenser(int &id);
Dispenser *GetDispenserByID(int id);
Cashier *LookForUnoccupiedCashier();
};
#endif // STATION_H
Когда я комментирую строку class Cashier
, компилятор завершается с ошибкой 'Cashier' was not declared in this scope
, даже если был включен Cashier.h
. Раскомментирование делает возможным компиляцию, но меня беспокоит, что этого не должно быть.
Cashier.h
#ifndef CASHIER_H
#define CASHIER_H
#include "Station.h"
class Station;
class Cashier
{
private:
bool busy;
Station *at_station;
public:
Cashier(Station *employer);
bool IsBusy() const { return busy; }
};
#endif // CASHIER_H
Как это возможно? Он четко объявлен в заголовочном файле, и, насколько мне известно, #include
делает только вставку содержимого файла в другой.
Спасибо за ответы заранее!