Ошибка при объявлении класса

Есть два заголовочных файла task.h и engine.h в первом объявляется класс Pyramid

#ifndef TASK_H
#define TASK_H

using namespace std;

class Pyramid {
private:
   Polygon *polygons;
public:
   Pyramid(const char* file_name);
   ~Pyramid();
};

#endif

Во втором объявляется класс Polygon

#ifndef ENGINE_H
#define ENGINE_H

class Polygon {
private:
   int count;
   double** coordinate; 

public:
   Polygon(int count, double **arr);
   ~Polygon();
};

#endif

В cpp файлах написаны реализации этих классов. При компиляции появляется ошибка error: 'Polygon' does not name a type. Понимаю, что проблема заключается в создании экземпляра класса Polygon в объявлении класса Pyramid. Не знаю как решить данную проблему.

Подключение обоих заголовочных файлов происходит в main.cpp

#include "graphics.h"
#include "engine.h"
#include "task.h"

using namespace std;

int main() {
   
   return 0;
}

Ответы (1 шт):

Автор решения: NunOfIt

engine.hpp

#ifndef ENGINE_H
#define ENGINE_H

class Polygon {
private:
   int count;
   double** coordinate; 

public:
   Polygon(int, double**);
   ~Polygon();
};

#endif

task.hpp

#ifndef TASK_H
#define TASK_H

class Polygon;

class Pyramid {
   Polygon* polygons;

public:
   Pyramid(const char*);
   ~Pyramid();
};

#endif

main.cpp

#include "engine.hpp"
#include "task.hpp"

using namespace std;

int main() {
   return 0;
}
→ Ссылка