在C ++中将成员函数指针“强制转换”为函数指针的最简单方法是什么?

时间:2010-07-20 04:51:34

标签: c++ function pointers member

我想为STL算法的“comp”参数提供成员函数,如lower_bound(...,Compare comp)。 comp()函数访问非静态成员字段,因此它本身必须是非静态成员,但非静态成员函数指针的类型不同于普通函数指针的类型。

解决此问题的最佳方法是什么?

3 个答案:

答案 0 :(得分:7)

这是std::mem_funstd::mem_fun_ref的最常见用法。它们是创建调用指定成员函数的函子的模板。 TR1添加std::tr1::bind,它也很有用且功能更多(如果你没有TR1,那么它基于Boost::bind)。 C ++ 0x将在标准库中包含std::bind(与TR1几乎没有变化)。

答案 1 :(得分:6)

听起来你想要类似boost::bind之类的东西,将成员函数指针绑定到该类的实例。

您是否愿意详细说明您的问题?示例代码等?

答案 2 :(得分:1)

#include<tr1/functional>

并使用mem_fn()