C ++代理:Game中的基类未定义错误
我有6个C ++头文件。 有很多内容,所以我尽量使它尽可能少地使用。 但是我从一开始就不断收到一个错误,说一个类“Agent”是未定义的。 我定义了它并且包含了它,并且在这里找不到导致问题的2个头文件:
Sinbad.h:
#ifndef SINBAD_H
#define SINBAD_H
#pragma once
#include "Agent.h"
#define NUM_ANIMS 13 // number of animations the character has. Should be made character specific
class Agent;
class Sinbad : public Agent {
Agent.h:
#ifndef AGENT_H
#define AGENT_H
#include <deque>
#include "aStar.h"
extern Ogre::SceneManager* sceneMgr; // Defined in main.cpp
class GridNode; // forward declarations
class Grid;
class Astar;
class Agent {
这是我得到的错误:
1>cgameengine_solutionsinbad.h(12) : error C2504: 'Agent' : base class undefined
它看起来像是在类定义之前指的是类Agent
,即可能在aStar.h
。
编辑:在源代码中搜索#define AGENT_H
。 如果您在Agent.h
之外的任何地方找到它,那意味着Agent
类可能永远不会被定义,如果仅仅因为Agent.h
可以#included
与AGENT_H
已经#defined
。
不要在Sinbad.h
重新声明类Agent
。 您已经包含Agent.h
。 似乎也是在案件Agent.h
与Grid
和Astar
。
一些评论意味着你不确定如何向前宣布作品。
如果需要告诉编译器该类型存在,但不需要任何定义,则向前声明一个类型。 一般来说,当一个类的成员或方法只有指针或类型的引用时,这是在头文件中完成的。 为了做任何涉及解引用指针或使用引用的任何事情,您需要包含定义类型的头,通常在定义类方法的源代码中。
链接地址: http://www.djcxy.com/p/17109.html