0

我已经在整个互联网上寻找以下问题的解决方案。给出的一些解决方案正是我正在做的,但是当我尝试编译我的代码时仍然出现错误。任何帮助将不胜感激。

我有一个基类 Stats,我的代码中的每个怪物类都将派生自它。这是基类:

#include <iostream>

class Stats {
    private:
        int hitpoints;
        int armor;
        int bonus;
    public:
        int getHP(){return hitpoints;}
        int getArm(){return armor;}
        int getBonus(){return bonus;}
        Stats();
        Stats(int, int, int);
};

Stats::Stats() {
    hitpoints = 0;
    armor = 0;
    bonus = 0;
}

Stats::Stats(int hp, int arm, int bon) {
    hitpoints = hp;
    armor = arm;
    bonus = bon;
}

现在我有一个从 Stats 类派生的怪物类(这里是 Orc)。Monster类的构造函数也调用了Stats类的重载构造函数:

#include <iostream>
#include "Stats.cpp"

class Orc: public Stats {
    public:
        Orc();
};

Orc::Orc() : Stats(8, 3, 1) {}

在主函数中,我构建了一个新的 Orc 对象并尝试使用该对象调用基类函数 Stats::getArm():

int main() {
    Orc mork();
    std::cout << "Armor: " << mork.Stats::getArm() << "\n";
}

我希望该函数返回盔甲的 int 值。相反,我收到了错误:

错误:在“mork”中请求成员“Stats::getArm”,它属于非类类型“Orc()”

顺便说一句,我正在用 c++11 编译。

4

1 回答 1

3
Orc mork();

这条线没有做你认为它做的事情。你的意思是输入:

Orc mork;

这将声明一个Orc名为mork. 相反,您声明了一个名为的函数mork,它不接受任何参数并返回一个Orc.

于 2015-07-07T22:42:34.057 回答