Похоже, у вас есть это:
Entity.h:
#include <vector>
class Entity {
public:
std::vector<Component> children;
};
Component.h:
#include <Entity.h>
class Component : public Entity { ... };
Одним из способов решения этой проблемы является предварительное объявление класса Component
и использование vector
указателей на Component
s:
Entity.h:
#ifndef ENTITY_H
#define ENTITY_H
#include <vector>
class Component; // Forward declaration.
class Entity {
public:
std::vector<Component*> children;
};
#endif /* ndef ENTITY_H */
Component.h:
#ifndef COMPONENT_H
#define COMPONENT_H
#include <Entity.h> // To allow inheritance.
class Component : public Entity { ... };
#endif /* ndef COMPONENT_H */
Entity.cpp:
#include <Entity.h>
#include <Component.h> // To access Component members.