我正在編寫一個編程任務,我們正在學習多態。我們正在使用父母和孩子班級製作一個簡單的格鬥遊戲。我不知道如何訪問不同子類中的變量
的基本結構是這樣的:
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