Klasy, które wzajemnie się do siebie odwołują.

0

Witam!

Piszę program, który posiada między innymi przedstawione poniżej klasy. Mój problem polega na tym, że mimo "podłączenia" pliku "unit.h" do pliku "field.h", kompilator cały czas wyrzuca błąd "Unit has not been declared". Podejrzewam, że chodzi o to wzajemne odwoływanie się klas do siebie. Czy mógłby mi ktoś wytłumaczyć co źle robię i jak w prawidłowy sposób to zaimplementować?

Z góry dzięki, pozdrawiam.

field.h:

#ifndef FIELD_H
#define FIELD_H
#include "unit.h"

class Field
{
private:
    Unit *unit;
public:
    Field();
    void setUnit(Unit *unit);
    bool isEmpty();
};

#endif // FIELD_H

field.cpp:

#include "field.h"

Field::Field()
{
}

void Field::setUnit(Unit *unit)
{
}

bool Field::isEmpty()
{
}

unit.h:

#ifndef UNIT_H
#define UNIT_H
#include "field.h"

class Unit
{
private:
    Field *field;
public:
    Unit();
    void move(Field *field);
};

#endif // UNIT_H

unit.cpp:

#include "unit.h"

Unit::Unit()
{
}

void Unit::move(Field *field)
{
}
1

Musisz zrobić deklarację zapowiadającą, tzn

class Unit;
class Field{
//bla bla
};
// w innym pliku
```cpp
class Field;
class Unit{
//bla bla
};

A następnie łaskawie doczytasz jak działa dyrektywa include i co się dzieje jak masz ifdefy.

0

Ok, poszło. Dzięki za pomoc, nie omieszkam łaskawie doczytać.

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