我正在研究一段代碼,其中幾個元素可以有一個方向,這意味着它們的空間位置相對於參考框架。作爲繼承的替代的泛型編程概念
我可以創建一個名爲OrientedObject
的抽象基類,然後是一組作用於此類實例的算法集合。我也可以定義我自己的oriented
概念,並寫出符合類型的通用算法,以滿足概念(類似於Boost Geometry Library的設計)。
依據升壓Generic Programming Techniques頁:
一個概念是一組由有效表達式, 相關的類型,不變量,和複雜性擔保的要求。據說模型化概念的類型是 滿足要求。一個概念可以延伸另一個概念的要求,這就是所謂的 細化。
因此,oriented
概念可以定義爲需要的類型(如矢量),有效的操作(如rotate
)的集合,等
在我看來,如果繼承模型是一個關係,和一個概念限定東西是否爲,則概念表示繼承的一種形式,這恰好是更實用的和可擴展的(沿鴨打字的線),如果還更智力複雜的定義正確。
現在,如果需要創建相關類型的容器,則需要繼承。例如,我不能創建一個面向類型的容器,除非它們屬於同一個基類。
因此,我很難決定是否根據concept
或繼承的方式定義我的概念(我無法想到任何其他形式)。
你能提供任何指導嗎?
當且僅當您需要管理異常集合的對象,這些對象的類型只在運行時知道,但無法靜態知道。否則,您可以將所有類型靜態分開。 –
@KerrekSB我需要將這些傢伙的單個集合保存到我的程序的一個非常特定的部分中......似乎只是因爲我將不得不依賴於繼承......我本來希望使用概念.. 。 好吧... – Escualo