我需要一個函數來爲我的類創建一個用於顯示項目的策略。例如:將一個一元謂詞傳遞給C++中的一個函數
SetDisplayPolicy(BOOLEAN_PRED_T f)
這是假設BOOLEAN_PRED_T是函數指針一些布爾謂詞類型,如:
typedef bool (*BOOLEAN_PRED_T) (int);
我感興趣的只是在如:顯示的東西時,所傳遞的謂詞是真,當它是假的時候不顯示。
上面的例子適用於函數返回布爾和採取一個int,但我需要一個非常通用的指針SetDisplayPolicy參數,所以我想到UnaryPredicate,但它是與增強相關的。我如何將一元謂詞傳遞給STL/C++中的函數? unary_function< bool,T >
將無法正常工作,因爲我需要一個bool作爲返回值,但我想要求用戶只用於「一元函數返回布爾」,在最通用的方法。
我想獲得我自己的類型爲:
template<typename T>
class MyOwnPredicate : public std::unary_function<bool, T>{};
莫非是一個好方法?
對於那些在2015年及以後閱讀的人來說......使用通用std :: function <>代替std :: unary_function <>可能會更好,因爲後者將在C++ 17中被棄用 – plexoos 2015-10-13 02:22:01