[问题] 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