基本密新行爲考慮現有的C++類層次結構:一個根類,很多孩子班級形成了向無環圖。如何代表C++
我想一個方法添加到根類,並可能覆蓋它在一些兒童。 但問題是,它是被禁止的,我修改這些現有的類(第三方庫,項目政策,封閉源代碼,等等)。然後
一個混合/擴展類將是一個很好的解決方案。但它在C++中並不可行。
的快速和骯髒的解決方案是將寫上使用 的的dynamic_cast操作員,以及執行想要的代碼給每個類型的層次結構的對象的類型將調度功能。但這是一種不好的做法,因爲 它容易出錯,它破壞了封裝,並且不支持安全的將來更改。
我的想法與定義保持某種哈希表的地方{RTTI類型ID,功能調用}」,並用它作爲 一個假的虛函數表因爲我想寫的功能和重寫但我不知道這是否會更好......
任何其他的想法運行虛函數表改造模板元編程解決方案的其他
不要忘了:????我明確不能改變原來的類(既沒有標題也沒有實現)。
好吧,然後我將使用std :: map系統。感謝advince :: before。 –
2011-04-18 18:03:31