[英]c++ Specializing class behavior for same types
我必須編寫一個作用於可以采用兩個值的數據的類。 但是,此數據可能有兩種可能,可以是0/1值(即布爾值),也可以是-1 / + 1值(即尖刺值)。
根據方程是布爾輸入還是棘手輸入,類的行為將明顯不同(即僅使用y = 1-2x進行轉換是不夠的),因為等式具有不同的形式。
我想知道實現這一目標的最少冗余和最靈活的方法是什么。
我是不是該
使用模板專業化或以某種方式重載
我希望這樣做,但我不知道它如何工作。 例如,如果我要處理'int'情況和'float'情況,那很好,但是-1 / + 1和0/1都只是int,所以我不能按類型區分它們。 ..除非我可以定義某種基本的“ spinny”類型,該類型只能采用值-1 / + 1,但我也不知道該怎么做。
還有其他事嗎
您可能應該定義一個棘手的類型(並為另一個使用bool
)。 最簡單的方法是使用強類型的枚舉:
enum class Spin : int {
UP = +1,
DOWN = -1,
};
這樣可以確保您不會將布爾值誤認為是多變的值, 反之亦然。 另外,它還可以解決您的問題(使用重載或模板專門化)。
請注意,仍然可以通過從+1或-1以外的int
顯式static_cast
獲得“無效”旋轉值。 只是不要這樣做,您會變得很黃金。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.