我想为像 lower_bound(..., Compare comp) 这样的 STL 算法的“comp”参数提供一个成员函数。comp() 函数访问非静态成员字段,因此它本身必须是非静态成员,但非静态成员函数指针的类型与普通函数指针的类型不同。
解决这个问题的最佳方法是什么?
std::mem_fun
这是and最常见的用法std::mem_fun_ref
。它们是创建调用指定成员函数的函子的模板。TR1 添加了一个std::tr1::bind
也有用且更通用的(如果您没有可用的 TR1,则基于Boost::bind
)。C++0x 将包含std::bind
在标准库中(与 TR1 基本相同)。
听起来您想要类似boost::bind
, 将成员函数指针绑定到该类的实例。
您是否愿意详细说明您要尝试做什么的问题?示例代码等?
#include<tr1/functional>
并使用 mem_fn()