看板Programming
标 题Re: [问题] 如何用父类别指标 call子类别函式??
发信站白色情迷 (Sun Sep 9 22:42:36 2007)
转信站ptt!ctu-reader!ctu-gate!news.nctu!news.ntu!mars.scc.ntnu!snowBBS
※ 引述《[email protected]》之铭言:
> ※ 引述《[email protected] (你偷try我帐号喔..~~)》之铭言:
> > 作者: superfriday (你偷try我帐号喔..~~) 看板: C_and_CPP
> > 标题: [问题] 如何用父类别指标 call子类别函式??
> > 时间: Thu Aug 30 15:23:39 2007
> > 我想请问一下
> > 我有下面的case
> > class A{
> > public:
> > virturl void fun(){printf("this is A\n");}
> > };
> > class B: public A{
> > void fun() {printf("this is B\n");}
> > };
> > class C: public A{
> > void fun() {printf("this is C\n");}
> > void myfun(){printf("this is my function\n");}
> > }
> > main(){
> > C obj;
> > A* pobj=&obj;
> > pobj->fun(); \\ 印出this is C
> > pobj->??? \\如何印出this is my function??
> > }
> > 我的问题是我要如何利用多型来call子类别的function(非virtual function)??
可以用 C++ 的 dynamic_cast ...
if( C *pc = dynamic_cast<C *>(pobj) ) {
pc->myfun();
}
你可以参考一下这个网页:
http://caterpillar.onlyfun.net/Gossip/CppGossip/dynamicCast.html
dreamer. =)
--
╭╢师大资讯。白色情迷╟┬─ ⊙ Origin : snow.ice.ntnu.edu.tw
├╨→ 140.122.77.49←╜╰─ ☆ From : alg.csie.ntnu.edu.tw