簡體   English   中英

C ++模板類/類型,可在最大值和最小值之間進行選擇

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM