这段代码输出多少,为什么,谢谢本帖最后由 sanquzhai 于 2013-06-04 15:16:06 编辑class Foo{public:static
这段代码输出多少,为什么,谢谢
本帖最后由 sanquzhai 于 2013-06-04 15:16:06 编辑
class Foo
{
public:
static void f2(int k){
cout<<k<<endl;
}
};
template<class op3>
void fn(op3 op, int m, int n, int x)
{
op(m, n,x);
}
int main()
{
fn(bind(bind(&Foo::f2,placeholders::_1),placeholders::_2,placeholders::_3),10,20,30);
system("pause");
return 0;
}
[解决办法]
首先,bind(&Foo::f2,placeholders::_1)这句其实什么都没做,只是返回了一个和f2效果一样的函数对象
然后把第二个参数和第三个参数以第一个和第二个的顺序传给上面的函数对象,最后输出20
