開發平台(Platform): (Ex: Win10, Linux, ...)
Linux
Ubuntu 16.04 LTS
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
GCC
問題(Question):
版上的前輩大家好!我是剛畢業的高中生!最近大略讀過一遍原文螞蟻書的OOP部份,然而
OOP的實作經驗幾乎沒有,只有寫過螞蟻書的一些題目。
現在將以前的練習作業寫成OOP,目前遇到的這個問題讓我卡住很久。
後面會附上精減很多的CODE,想請各位前輩幫我看是不是哪個部份觀念錯誤!麻煩各位了
Skill是父類別,規範子類別需有use()
Fire繼承Skill,Override覆寫 use()
class Skill
{
public:
void use(){...A...}
}
class Fire : public Skill
{
public:
void use(){...B...}
}
我用一個新的類別Skill_List將擁有的skill串起來方便程式使用
class Skill_List()
{
public:
Skill_List(){
this->skill[0]=new Fire;
this->skill[1]=new Hide;
}
private:
Skill *skill[2]
}
然而欲使用skill[0]的use()時,執行的卻不是子類別Fire裡的use() B動作,而是父類別的A動作
我很困惑的是我儲存的列表明明是用指標存,但是為什麼會出現不屬於Fire類別的動作
Skill_List list;
list.skill[0]->use();
希望各位前輩能指點迷津,謝謝各位!!