我试图让这段代码运行起来。我已经接近成功,但是卡在了这一行:
_f = std::bind1st(
std::mem_fun(f, x);
首先请理解我不想改任何代码,只想改变构造函数。为什么?因为我想学习。最终我想编写一个包装器类
Func
,可以以同样的方式处理自由函数和成员函数。那么在
std::mem_func()
调用中,我需要将什么作为第一个参数呢?我尝试了很多方法。可能这是一个重复的问题,但我不知道如何搜索这个问题。我缺乏词汇。如果有人能指向一个教程或其他东西,帮助我表达这个问题,我也会感激不尽。
以下是完整的示例代码:
#include <boost/function.hpp>
#include <iostream>
struct X
{
int foo(int i)
{
return i;
};
};
class Func
{
public:
Func(X *x, int (X::* f) (int))
{
_f = std::bind1st(
std::mem_fun(f, x);
std::cout << _f(5); // Call x.foo(5)
};
private:
boost::function<int (int)> _f;
};
int main()
{
X x;
Func func(&x, &X::foo);
return 0;
}
感谢您的提前帮助。
boost::bind
——一切都会豁然开朗的。 - Nim