从派生类对象调用基类函数.派生类构造函数中设置的基类数据成员



我已经在互联网上寻找下面问题的解决方案。给出的一些解决方案正是我正在做的,但当我试图编译代码时,仍然会遇到错误。如有任何帮助,我们将不胜感激。

我有一个基类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类派生而来的。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";
}

我希望函数返回armor的int值。相反,我得到了错误:

错误:请求"mork"中的成员"Stats:getArm",该成员属于非类类型"Orc((">

顺便说一下,我正在用c++11进行编译。

Orc mork();

这条线并不像你想象的那样。你想输入:

Orc mork;

它将声明一个名为morkOrc对象。相反,您声明了一个名为mork的函数,该函数不接受任何参数,并返回一个Orc

最新更新