[問題] 如何用父類別指標 call子類別函式??

看板Programming作者 (你偷try我帳號喔..~~)時間18年前 (2007/08/31 12:43), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/3 (看更多)
※ [本文轉錄自 C_and_CPP 看板] 作者: 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)?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.41.122

08/30 16:09,
用模板實現
08/30 16:09

08/30 16:10,
也可以實現相同的功能
08/30 16:10

08/30 17:11,
不是很懂耶 sorry 我不會用模版
08/30 17:11

08/30 17:11,
有方法可以直接改嗎。??
08/30 17:11

08/30 23:42,
不用改
08/30 23:42

08/30 23:42,
pobj->A::fun(); 即可
08/30 23:42

08/30 23:43,
oops 我看錯了..... 這應該是不可以的
08/30 23:43

08/30 23:44,
A*的定址能力到不了C的scope裡面
08/30 23:44

08/31 00:41,
給A一個"鉤子" 看看能不能把責任交給子類別處理...
08/31 00:41

08/31 03:17,
要這樣設計的話只好用 dynamic_cast 了。
08/31 03:17

08/31 08:14,
smart ptr好像有做到這樣的處理吧
08/31 08:14
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.41.122

09/10 00:20, , 1F
((C*)pobj)->myfun()
09/10 00:20, 1F
文章代碼(AID): #16rvne0q (Programming)
文章代碼(AID): #16rvne0q (Programming)