C++自定义的类,不能作为基类使用,很久都找不出原因。请高手帮帮忙了。
几个类之间的相互引用关系(前面的被后面的引用):
Node.h和Boundary.h→Scene.h→SceneManager.h→QuadtreeMgr.h
Node.h→Boundary.h
Node的基类是CObject,
现在要将SceneManager作为QuadtreeMgr的基类,
CQuadtreeMgr : public CSceneManager
但是,在VS2005 C++中用向导生成类,却提示“项目中未找到基类CSceneManager,继续添加该类吗?”
不知道是不是这些代码或者层层的引用当中除了什么问题使得这个类不识别。
下面我将代码贴一下:
Node.h
class CNode :
public CObject
{
public:
CNode(void);
virtual ~CNode(void);
int m_id;
int m_proid; //(Property ID for LOD)
TCHAR m_name[20];
TCHAR m_LayerName[20];
bool m_isSelected;
bool m_isCollideCheck;
bool m_isVisible;
bool m_isDeleted;
CBoundaryBox m_BoundaryBox;
Vector3 m_Pivot;
Vector3 m_PrePosition;
Vector3 m_Position;
Vector3 m_PreRotation;
Vector3 m_Rotation;
Vector3 m_PreScale;
Vector3 m_Scale;
long m_NumOfFace;
long m_NumOfVertex;
short m_NumOfMat;
int TYPE;
int RenderType;
void SetId(int idValue);
int GetId(void);
TCHAR* GetLayer(void);
TCHAR* GetName(void);
void SetSelected(bool isSelected);
bool GetSelected(void);
void SetCollideCheck(bool isCollideCheck);
bool GetCollideCheck(void);
void SetVisible(bool isVisible);
bool GetVisible(void);
void SetDeleted(bool isDeleted);
bool GetDeleted(void);
Vector3 GetPivot(void);
void SetPosition(Vector3 Position);
Vector3 GetPosition(void);
void SetRotation(Vector3 Rotation);
Vector3 GetRotation(void);
void SetScale(Vector3 Scale);
Vector3 GetScale(void);
CBoundaryBox GetBoundryBox(void);
};
BoundaryBox.h
#include <math.h>
#include <cassert>
#include "Vector3.h"
class CBoundaryBox
{
public:
CBoundaryBox(void);
CBoundaryBox(Vector3 min, Vector3 max);
~CBoundaryBox(void);
void MergeBox(CBoundaryBox box);
Vector3 minPoint;
Vector3 midPoint;
Vector3 maxPoint;
};
Scene.h
class CScene
{
private:
int NumOfLayer;
public:
CScene(void);
virtual ~CScene(void);
public:
CBoundaryBox m_BoundaryBox;
CTypedPtrArray<CObArray, CLayer*> LayerList;
CTypedPtrArray<CObArray, CNodeAbstract*> NodeList;
CTypedPtrArray<CObArray, CNode*> SelectSet;
};
SceneManager.h
#include "Scene.h"
#include "Vector3.h"
class CSceneManger
{
public:
vector<int> m_LayerId;
vector<int> m_NodeId;
CScene Scene;
public:
CSceneManger(void);
virtual ~CSceneManger(void);
int GetLayerID(void);
CLayer* GetLayer(int ID);
bool AddLayer(TCHAR LayerName[20]);
bool DeleteLayer(TCHAR LayerName[20]);
};