[問題] 請問可以這樣寫嗎

看板C_and_CPP (C/C++)作者 (HaHaHa~~~)時間13年前 (2013/01/03 11:17), 編輯推噓1(1010)
留言11則, 4人參與, 最新討論串1/2 (看更多)
先說好這個問題可能沒有太大的意義,只是突然想到的一個怪問題 (就麻煩大家不會鞭大大力...@@) 很多書上在說明多型的特性時都會以畫圓形,三角形等為例 類似這樣子 http://ideone.com/dx8pYg 不同的形狀都繼承scope,但是都有同樣名稱的function 如此,同樣的呼叫方式,但參數的部份稍作修改,功能便大不相同 類似的概念,可以修改成 "不同的class,內有同樣名稱的member,但彼此資料結構是不同的 透過繼承,讓這些class產生關連,關聯性就是它們有同樣名稱的member" 像這樣子 //base.h class SomeThing{}; class base{ virtual SomeThing* GetSomeThing(); }; //Test1.h class SomeThing{ int a; }; class Test1:public base{ SomeThing* Object; }; //Test2.h class SomeThing{ int b; int c; }; class Test2:public base{ SomeThing; }; Test1和Test2都有SomeThing,但只是名稱相同而已 目的是希望每一個Test,看起來架構類似(都有Object) 我想寫類似這樣的code http://ideone.com/vrlDbf 不知道這樣有辦法實現嗎? (不知道表達的好不好,再麻煩大家說明,謝謝) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.134.238.4

01/03 11:32, , 1F
template
01/03 11:32, 1F

01/03 11:37, , 2F
可以是可以(先不管Something名稱重覆)但OOP不是這樣用
01/03 11:37, 2F

01/03 12:04, , 3F
我覺得你可能要給個比較concrete的use case 大家才比較好解答
01/03 12:04, 3F

01/03 12:31, , 4F
linker 會爛掉
01/03 12:31, 4F

01/03 12:32, , 5F
你可能想實現 duck typing, 但用 template 比較自然
01/03 12:32, 5F

01/03 12:34, , 6F
如果你每次呼叫都要轉型, 那繼承完全多餘
01/03 12:34, 6F

01/03 13:57, , 7F
為了表達外部不需要知道inner class的存在,或著是
01/03 13:57, 7F

01/03 13:58, , 8F
上面推錯文
01/03 13:58, 8F

01/03 20:46, , 9F
OOP 也是可以這樣用, 像 Java 的 interface 就是這種想法
01/03 20:46, 9F

01/03 20:47, , 10F
不過 C++ 這樣用確實是不太自然, 要馬就 abstract class
01/03 20:47, 10F

01/03 20:47, , 11F
搭配多重繼承, 要馬就是用 template
01/03 20:47, 11F
文章代碼(AID): #1GvFXc8i (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1GvFXc8i (C_and_CPP)