讓我們假設我有類這樣的結構:基類Object
,其是用於Bool
,Int
,Float
,Bytes
和Unicode
類父類。在我有一些功能,如Bool cast_bool() const
,Int cast_int() const
等作爲Object
類和所有子類中的虛擬函數之前,我已經分別實現了這些功能。C++:在父類覆蓋模板的成員函數
看來更好的解決方案是實現template <typename TYPE> TYPE cast() const
函數。但是,由於C++禁止虛擬模板功能,我不知道如何完成此任務。我需要的是爲Object
及其孩子提供template <typename TYPE> TYPE cast() const
。通用Object::cast<TYPE>() const
只會丟CastError
;那麼對於每一個類型,如Bool
,Int
等,我將實現像Bool::cast<Bool>() const
,Int::cast<Bool>() const
等功能,我甚至計劃添加投到內置對象,但現在我只是超載operator bool() const
,operator signed short() const
等如果沒有實現中,模板必須從Object
類切換到其通用形式,只是拋出一個錯誤。有沒有辦法做到這一點(也許我需要使用一些模式)?或者更容易離開Int cast_int() const
等功能?提前致謝!
如果您的數據轉換存儲在基類中,則沒有理由不能將模板成員函數添加到同一基類。然後讓子類調用它。或者,也許我誤解了這個問題。 – Twifty