使用方法影响另一个对象的字段

Affecting another object's fields with methods

本文关键字:字段 一个对象 影响 使用方法      更新时间:2023-10-16

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

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;
}

下面是 wolf 类的代码:

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;
    }
};

我怎么让狼伤害羊的生命。我必须创建全局函数还是执行其他操作?

对象通过其方法进行交互。看起来你有一个动物类,你的狼类继承自它,希望你的羊类也继承自动物。 由于您没有在 Wolf 中声明 HP 或伤害变量,我猜它已经在您的动物类中了。

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

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

现在在你的狼类中,你可以攻击,你想要你的攻击方法捕获目标动物。

void attack(Animal animal) {
    animal.receiveDamage(DMG)
}
现在,当一只狼

攻击另一只动物(一只绵羊或另一只狼或其他任何继承自动物的东西(时,伤害将应用于HP。