[問題] class判斷問題

作者: cozychocolat (chocolate)   2017-05-12 00:22:48
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
Code::Blocks C++
問題(Question):
當傳入的class不同的時候
要如何判斷傳入的是屬於哪個class呢
程式碼當中的 man 是父類別
而 magician 和 warrior 都是繼承man的子類別
我在父類別 man 中寫一個功能
希望傳入不同class時可以有不同的處理方式
錯誤結果(Wrong Output):
會顯示 magician 和 warrior 在這邊沒有被宣告
'magician' was not declared in this scope
程式碼(Code):(請善用置底文網頁, 記得排版)
http://ideone.com/AeQHKr
作者: jerryh001   2017-05-12 00:56:00
把兩個要做不同事情的地方做成同一個多型函數
作者: loveflames (咕啾咕啾魔法陣)   2017-05-12 07:45:00
template pattern你這個寫法違反了OO的精神你不能加一個derived class就來改一次base class
作者: hichcock (快樂一整年 ^^~~~)   2017-05-12 08:59:00
看敘述應該是要用 virtual function
作者: loveflames (咕啾咕啾魔法陣)   2017-05-12 09:00:00
所以要用template pattern啊在父類放一個ptr,指向實作類由子類別來指定實作類,例如class A:public B<X>{..};這比你在父類放一堆typeid好太多了用我的寫法就不需要去判斷
作者: hunandy14 (Charlott.HonG)   2017-05-12 13:57:00
問同學看看你有沒有誤會老師的意思~覺得可能有
作者: LPH66 (-6.2598534e+18f)   2017-05-12 16:25:00
loveflames 講的其實就是 CRTP父類藉由 template 參數拿到子類資訊再進行操作這可以用來實作不 virtual 的 virtual function call其中一種寫法就是下篇那個樣子

Links booklink

Contact Us: admin [ a t ] ucptt.com