一个继承另一个类的类不被识别为类型

时间:2015-01-04 23:26:24

标签: c++ inheritance

我是C ++的新手,作为一种“学习经验”,我正在移植一个用C#制作的旧游戏机“游戏”。

目前,我在Ubuntu 14.10下使用g ++ 4.9.1。

我有一个头文件,用于定义某些类型,例如ItemHealingItem(继承Item),以及继承Item的Weapon

我稍后在另一个头文件中引用了这些类型,我在其中添加了正确的#include,在这种情况下是一个Entity类,它定义了Player,其Items::Weapon _equippedWeapon

有趣的是,编译器似乎没有将Items::Weapon识别为一种类型,理论上这不应该是一个问题,考虑Weapon继承ItemItems::Item编译如果我将特定行更改为该行,则会很好,但Items::HealingItem不会)

我在这里错过了什么吗?如果需要,我可以发布完整的源代码。

以下是在我的项目中运行make的完整消息:

error: 'Weapon' in namespace 'Items' does not name a type
    Items::Weapon _equippedWeapon;
           ^

仅供快速参考,我的命名空间设置如下

namespace Items
{
        class Item;
        class HealingItem;
        class Weapon;
}
//some code cut out for obvious reasons, i'll just show the basic class constructors for the classes
class Items::Item
{
public:
        Item();
//...
};
class Items::HealingItem: public Items::Item
{
//...
public:
        HealingItem();
};
class Items::Weapon: public Items::Item
{
public:
        Weapon();
//...other properties and get/setters
};

其他信息:

我的继承类未被识别为类型。

例如,当我声明变量Items::Item时,程序编译正常。但是,正当我将其更改为Items::Weapon,这是从Items::Item派生的,当编译器错误进入时。问题是,如何让编译器开始将Items::Weapon识别为它自己的类型?

0 个答案:

没有答案