c++ - 基类未定义

标签 c++ class undefined base

我下面的代码产生了错误

'WorldObject': [Base class undefined (translated from german)]

这是为什么?这是产生此错误的代码:

ProjectilObject.h:

#pragma once

#ifndef _PROJECTILOBJECT_H_
#define _PROJECTILOBJECT_H_

#include "GameObjects.h"
class WorldObject;
class ProjectilObject: public WorldObject
{
public:
    ProjectilObject(IGameObject* parent,int projectiltype);

    void deleteyourself();
protected:
virtual void VProcEvent( long hashvalue,    std::stringstream &stream);
    virtual void VInit();
    virtual void VInitfromStream( std::stringstream &stream     );
    virtual void VonUpdate();
    virtual void VonRender();
private:
    vec3 vel;

    float lifetime;
    float lifetimeend;

    vec3 target;

    int m_projectiltype;
};

#endif

这是 WorldObject 类的代码文件:

游戏对象.h:

#pragma once

#ifndef _GAMEONJECTCODE_H_
#define _GAMEONJECTCODE_H_

#include "IGameObject.h"
#include "Sprite.h"
#include "GamePath.h"
#include "HashedString/String.h"
#include "IAttribute.h"
#include "CharacterObjects.h"

...

class WorldObject: public IGameObject, public MRenderAble
{
public:
    WorldObject(IGameObject* parent);
    virtual bool IsDestroyAble();
    virtual bool IsMageAble();
    virtual bool IsRenderAble();
protected:
    virtual void VProcEvent( long hashvalue, std::stringstream &stream);
    virtual void VonUpdate();
    virtual void VonRender();
    virtual void VInit() =0;
    virtual void VInitfromStream( std::stringstream &stream ) =0;
    virtual void VSerialize( std::stringstream &stream );

    vec3 poscam;    
};

...

#endif

此文件中还有一些其他类,但我认为它们无关紧要。也许有一个我没有看到的小错误,但我不明白为什么会产生这个错误。当您需要更多代码时,请随意。

最佳答案

如果您有任何源文件在 ProjectilObject.h 之前包含 GameObjects.h 或不直接包含 ProjectilObject.h,则编译器首先会通过GameObjects.h中的include找到ProjectilObject的声明,然后才知道WorldObject是什么。这是因为 GameObjects.h 首先包含 ProjectilObject.h,然后声明 WorldObject。在这种情况下,ProjectilObject.h 中包含的 GameObjects.h 将不起作用,因为 _GAMEONJECTCODE_H_ 已经定义。

为避免这种情况,请务必在源文件中包含 ProjectilObject.h 而不是 GameObjects.h,或者使用 forward declarations .

关于c++ - 基类未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10675618/

相关文章:

c++如何输出我在函数中操作的数组?

c++ - 函数返回非引用变量和引用变量之间的差异

c++ - MS visual studio IDE下如何使用g++编译器

class - Swift 类省略带闭包的括号 : syntactic sugar or something else?

php - 如何仅在定义变量时使用我的变量?

c++ - strcpy c++ 无法从字符串 char* 转换参数 1

python - 方法内 while 循环中每次迭代的信息

javascript - jQuery:如何选择包含两个字符串的类

javascript - 如何用JS深度检测 "null"或 "undefined"?

c++ - 链接器错误 C++ "undefined reference "