C++ 最简单的方法是什么;铸造;C+中指向函数指针的成员函数指针+;?

C++ 最简单的方法是什么;铸造;C+中指向函数指针的成员函数指针+;?,c++,function,pointers,member,C++,Function,Pointers,Member,我想为STL算法的“comp”参数提供一个成员函数,比如下限(…,comp)。comp()函数访问非静态成员字段,因此它本身必须是非静态成员,但非静态成员函数指针的类型不同于普通函数指针的类型 解决此问题的最佳方法是什么?听起来您需要类似于boost::bind的东西来将成员函数指针绑定到该类的实例 你愿意详细说明一下你的问题吗?你想做什么?示例代码等?这是最常用的std::mem\u-fun和std::mem\u-fun\u-ref。它们是创建调用指定成员函数的functor的模板。TR1添加

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


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

听起来您需要类似于
boost::bind
的东西来将成员函数指针绑定到该类的实例


你愿意详细说明一下你的问题吗?你想做什么?示例代码等?

这是最常用的
std::mem\u-fun
std::mem\u-fun\u-ref
。它们是创建调用指定成员函数的functor的模板。TR1添加了一个
std::TR1::bind
,它也很有用,而且功能更为广泛(如果您没有可用的TR1,则基于)。C++0x将在标准库中包含
std::bind
(与TR1几乎相同)。

\include

和use mem_fn()

mem_fun()仅适用于具有一个或没有参数的函数,而comp必须指向具有两个参数的函数。Qt中是否有此功能?
mem_-fun
也不适用于具有参考参数的函数:(如果您使用
mem\u-fun\u-ref
,然后尝试将其与
bind1st
bind2nd
组合使用,则会再次失败,因为它们刚刚损坏。对于像我这样迟到的人,我建议完全改为
boost::bind
boost::function
:避免使用
mem\u-fun
>mem_fun_ref不推荐使用;切换到
mem_fn
。详细信息:或者更好,在OP的情况下,使用lambda函数。您要在google上搜索的术语是“functor”或函数对象,或者使用C++11,使用lambda/匿名函数:)Boost bind绝对是最灵活的解决方案。
#include<tr1/functional>