アイテムを表示するための私のクラスのためのポリシーを確立する関数が必要です。例えば:C++の関数に単項述語を渡す
SetDisplayPolicy(BOOLEAN_PRED_T f)
これはBOOLEAN_PRED_Tは、いくつかのブール述語の種類等に関数ポインタであると想定されます。
typedef bool (*BOOLEAN_PRED_T) (int);
私は例えば上の興味:渡された述語がTRUEのときに何かを表示しますそれが偽であるときは表示されません。
上記の例は、boolを返してintをとる関数で動作しますが、SetDisplayPolicy引数には非常に汎用的なポインタが必要なので、UnaryPredicateを考えましたが、それは関連性が高くなっています。 STL/C++の関数に単項述語を渡す方法は? unary_function< bool,T >
は戻り値としてboolが必要なので動作しませんが、最も一般的なアプローチでは "boolを返す単項関数"だけをユーザーに尋ねます。私のように自分のタイプを導き出すと考え
:
template<typename T>
class MyOwnPredicate : public std::unary_function<bool, T>{};
はそれは良いアプローチだろうか?
これを2015年以降に読んでいる人には... std :: unary_function <>の代わりに汎用std :: function <>を使う方が良いかもしれません。後者はC++で廃止される17 – plexoos