Problem` z dyrektywami - '#include nested too deeply'

0

Witam
Mam dwie struktury - gameData oraz food w oddzielnych plikach, posiadających "strażników nagłówków". Do obu plików dołączam dyrektywą #include sporo plików niezbędnych do działania (one także są zabezpieczone strażnikami). Tak się zdarzyło, że w strukturze gameData muszę umieścić wskaźnik do obiektu food. Kiedy do gameData dołączyłem plik "Food.h" od razu pojawiło się kilka błędów o identycznej treści:
#include nested too deeply
wszystkie wskazują na dyrektywy #include w pliku Food.h.
Podejrzewam, że popełniłem jakiś błąd w strażnikach nagłówków. Poszukałem na necie jakichś tematów podobnej treści, ale jedyne porady jakie znalazłem to sprawdzenie czy nie popełniłem literówki i czy dyrektywa #ifndef ma koniec (oznaczony dyrektywą #endif.

Plik Point.h:

#pragma once

#include "Coord.h"
#include "GameData.h"

struct point
{
   coord position;
   char c;

   point(int x = 0, int y = 0, char cn = 'o');

   void displayP(gameData& data);
};

Plik Food.h:

#pragma once

#include "Point.h"
#include "Coord.h"

struct food : public point
{
    food();
    coord randomPos();
};

Plik GameData.h:

#pragma once

#include <string>
using namespace std;

#include "Food.h"

struct gameData
{
    int score;
    string screen;
    food* f; 

    gameData() : score(0), screen(" ") {}
};

W trakcie kompilacji kompilator zapętla się "skacząc" między tymi plikami (dopiero po chwili wywala błąd). Dodam jeszcze, że przeniesienie strażnika nagłówka w Food.h przed dyrektywy dołączania plików usuwa wcześniejsze błędy, ale w pliku GameData.h nie mogę stworzyć żadnego obiektu typu food. Liczę na waszą pomoc.

2

To:

#ifndef _GAMEDATA_H_
#define _GAMEDATA_H_

ma być na samym początku pliku - zawsze.

1

Jeśli to jest c++ to pisz

#pragma once

Edit// Gdybys pytał dlaczego to
Tutaj//en.wikipedia.org/wiki/Pragma_once
znajdziesz wyjaśnienie

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