[英]C++ Template class/type to choose between max and min
我正在嘗試編寫一個模板化的類。
template <<typename T>>
myclass {
// ...
}
我希望T
成為這樣,如果我使用適當的T
實例化myclass obj<T>
,則該類應該能夠在兩個數字的最小值或最大值之間進行選擇。 即myclass可能用min或max實例化。
我不介意使用std :: less / std :: more / std :: max / std :: min或任何內置仿函數對象。
但是,我不想在構造函數中使用枚舉,然后根據枚舉值調用min或max例程。 我希望代碼更加簡潔。 有任何想法嗎? 是否可以在C ++中完全做到這一點
這沒什么大不了的。 考慮以下:
template<typename T> class MyClass {
public:
int foo(int a, int b) const {
return T()(a, b);
}
};
現在,如果T
是其operator()
返回其兩個參數中最大值的類型,則您將返回最大值,並且對要應用的任何其他二進制算法也是如此。
[編輯]我相信我還沒有完全理解您的問題,@ DeadMG的答案實際上就是您想要的。
下面的模板允許您實例化一個類,該類在給定T,MIN,MAX的情況下可以提供MIN和MAX之間的一些數字X。
template<int T, int MIN, int MAX, int X = MIN + T/(MAX - MIN)>
class MyClass
{
int foo() const
{
return X;
}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.