【问题标题】:Affecting another object's fields with methods用方法影响另一个对象的字段
【发布时间】:2018-01-02 16:03:07
【问题描述】:

我必须编写一个带有类的程序,该程序模拟动物在二维数组中相互干扰。我正在尝试使用一维数组来做到这一点,但我遇到了一只动物撞到另一只动物的问题。我不知道该怎么做。我声明了一个数组,如下所示:

animal **tab = new animal*[3];
tab[0] = new wolf(30, 0);
tab[1] = new sheep(100, 0);
tab[2] = new wolf(30, 0);
int n=1;
if (tab[3 + n] = tab[4])
{
    cout << "HP left " <<  << endl;
}

这是狼类的代码:

class wolf : public animal {
    public:
    int atack()
    {
        return DMG;
    }

    int life()
    {
        return HP;
    }

    wolf(int a, int b):animal(a, b)
    {
        DMG = b;
        HP = a;
    }
};

我怎么让一只狼毁了一只羊的生命。我必须创建一个全局函数还是做其他事情?

【问题讨论】:

    标签: c++ class methods objective-c++


    【解决方案1】:

    对象通过它们的方法进行交互。看起来您有一个 Animal 类,您的 Wolf 类从该类继承,并且希望您的 Sheep 类也从 Animal 继承。由于您没有在 Wolf 中声明 HP 或伤害变量,我猜它已经在您的 Animal 类中了。

    在您的 Animal 类中,您应该创建一个名为 receiveDamage 或类似的方法。该方法会修改 HP。

    void receiveDamage(int damage) {
        HP -= damage;
        if (HP <= 0) {
            cout << "Animal died" << endl;
        }
    }
    

    现在在你可以攻击的狼类中,你希望你的攻击方法可以攻击目标动物。

    void attack(Animal animal) {
        animal.receiveDamage(DMG)
    }
    

    现在,当一只狼攻击另一只动物(一只羊或另一只狼或其他任何从动物继承的动物)时,HP 将受到伤害。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-13
      • 2015-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多