【发布时间】:2009-07-01 06:26:55
【问题描述】:
我需要一个函数来为我的班级建立显示项目的策略。例如:
SetDisplayPolicy(BOOLEAN_PRED_T f)
这是假设 BOOLEAN_PRED_T 是一个 函数指针,指向一些布尔谓词类型,例如:
typedef bool (*BOOLEAN_PRED_T) (int);
我只对以下内容感兴趣:当传递的谓词为 TRUE 时显示某些内容,当它为 false 时不显示。
上面的示例适用于返回 bool 并采用 int 的函数,但我需要一个非常通用的 SetDisplayPolicy 参数指针,所以我想到了 UnaryPredicate,但它与 boost 相关。如何将一元谓词传递给 STL/C++ 中的函数? unary_function< bool,T > 不起作用,因为我需要一个 bool 作为返回值,但我想以最通用的方法向用户询问“返回 bool 的一元函数”。
我想将自己的类型派生为:
template<typename T>
class MyOwnPredicate : public std::unary_function<bool, T>{};
这是个好方法吗?
【问题讨论】:
标签: c++ stl arguments predicate