我正在编写一个编程任务,我们正在学习多态。我们正在使用父母和孩子班级制作一个简单的格斗游戏。我不知道如何访问不同子类中的变量
的基本结构是这样的:
class Parent
{
protected:
int life;
};
class Ninja : public Parent
{
private:
Ninja (int x);
void ninjaAttack();
};
Ninja::Ninja (int x) : Parent()
{
life = x;
}
Class Monster : public Parent
{
private:
Monster();
void monsterLife();
};
Monster::Monster() : Parent()
{
}
void Ninja::ninjaAttack()
{
life = (life-1);
}
void Monster::monsterAttack()
{
cout << life << endl;
}
int main()
{
Ninja n1 (4);
Monster m2;
Parent * p1 = &n1;
Parent * p2 = &m1;
p1 -> ninjaAttack();
p2 -> monsterAttack();
return 0;
}
所以基本上,通过初始化一个忍者,我应该让家长::生活= 4,对不对?然后通过运行ninjaAttack,我将“生命”降至3.然后通过调用monsterAttack,我应该输出3,是吗?
除了不起作用。它每次输出零。我究竟做错了什么?如果我将Parent类中的变量设置为等于Child类中的某个变量,那么如何才能真正更改Parent类中的变量,以便可以在Child类中访问这个新变化的变量?
谢谢!!
请作出[mcve]。您的代码由于各种不相关的原因而无法编译,因此很难找到实际问题。 – nwp
我建议你从编译你的例子开始,编译器是你的朋友,并会告诉你你做错了什么。一些提示:ninjaAttack和monsterAttack不是Parent类的方法,所以你不能在指向Parent类的指针上调用它们。 现在你的问题 - 当你打电话给ninjaAttack,你减少你称为方法的忍者对象的生命数 - 这不会改变不同对象的生命值 – Amnon
感谢您的评论,我会让它编译 – FKAjasmine