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可以#includedAGENT_H已经#defined


不要在Sinbad.h重新声明类Agent 。 您已经包含Agent.h 。 似乎也是在案件Agent.hGridAstar


一些评论意味着你不确定如何向前宣布作品。

如果需要告诉编译器该类型存在,但不需要任何定义,则向前声明一个类型。 一般来说,当一个类的成员或方法只有指针或类型的引用时,这是在头文件中完成的。 为了做任何涉及解引用指针或使用引用的任何事情,您需要包含定义类型的头,通常在定义类方法的源代码中。

链接地址: http://www.djcxy.com/p/17109.html

上一篇: C++ Agent : Base class undefined error in Game

下一篇: How does the program flow look