Component と Transform のベクトルを持つクラス GameObject があります。Transform はコンポーネントですが、単独でアクセスできます。Component.h と Transform.h の両方を GameObject に含めようとすると、Component で Base class undefined エラーが発生します。
エラーメッセージ:
Error 1 error C2504: 'Component' : base class undefined c:\users\pyro\documents\visual studio 2010\projects\engine\main\transform.h 9
GameObject.h
#ifndef _GameObject
#define _GameObject
#include "Core.h"
#include "Component.h"
#include "Transform.h"
class Transform;
class Component;
class GameObject
{
protected:
Transform* transform;
vector<Component*> components;
};
#endif
Component.h
#ifndef _Component
#define _Component
#include "Core.h"
#include "GameObject.h"
class GameObject;
class Component
{
protected:
GameObject* container;
};
#endif
Transform.h
#ifndef _Transform
#define _Transform
#include "Core.h"
#include "Component.h"
//Base class undefined happens here
class Transform : public Component
{
};
#endif
他にもたくさんのトピックを見つけましたが、それらは私が抱えている問題に実際には対処していません。質問は次のとおりです。なぜこのエラーが発生するのですか?どうすれば修正できますか?