C++ 与void(主窗口::*handler)()等价的std::mem_fn类型是什么?
我有一个功能:C++ 与void(主窗口::*handler)()等价的std::mem_fn类型是什么?,c++,c++11,C++,C++11,我有一个功能: std::function<void(sp_session*)> test(void(MainWindow::*handler)()) { return ...; } 所以我不确定我做错了什么。C++11绑定器函数家族(mem\u fn,bind)返回的确切类型未指定,这意味着它是一个实现细节,您不应该关心它 §20.8.9[功能绑定] 模板 未指定绑定(F&&,BoundArgs&&& §20.8.10[函数memfn] 模板 unspecifiedmem
std::function<void(sp_session*)> test(void(MainWindow::*handler)())
{
return ...;
}
所以我不确定我做错了什么。C++11绑定器函数家族(
mem\u fn
,bind
)返回的确切类型未指定,这意味着它是一个实现细节,您不应该关心它
§20.8.9[功能绑定]
模板
未指定
绑定(F&&,BoundArgs&&&代码>
§20.8.10[函数memfn]
模板
unspecified
mem_fn(R T::*pm)代码>
“变通方法”:使用模板
template<class F>
std::function<void(sp_session*)> test(F handler)
{
return ...;
}
模板
std::功能测试(F处理程序)
{
返回。。。;
}
C++11活页夹函数系列(mem\u fn
,bind
)返回的确切类型未指定,这意味着它是一个实现细节,您不应该关心它
§20.8.9[功能绑定]
模板
未指定
绑定(F&&,BoundArgs&&&代码>
§20.8.10[函数memfn]
模板
unspecified
mem_fn(R T::*pm)代码>
“变通方法”:使用模板
template<class F>
std::function<void(sp_session*)> test(F handler)
{
return ...;
}
模板
std::功能测试(F处理程序)
{
返回。。。;
}
std::mem\u fn
不是您要找的类型。
您需要的类型是将实例作为参数的std::function
:
std::function<void(sp_session*)> test(std::function<void(MainWindow *)> handler)
在新功能中,您可以执行以下操作:
handler(instance);
std::mem\u fn
不是您要找的类型。
您需要的类型是将实例作为参数的std::function
:
std::function<void(sp_session*)> test(std::function<void(MainWindow *)> handler)
在新功能中,您可以执行以下操作:
handler(instance);
mem\u fn
是函数,不是类型,不能这样使用。mem\u fn
是函数,不是类型,不能这样使用。@Leith:mem\u fn
是绑定函数,允许您将成员指针转换为函数对象,然后可以通过std::function
存储。它是std::bind(&T::member,_1,_2,_3,…)
的简写形式,只是您不需要知道将有多少个参数。使用mem\u fn
,它只是std::mem\u fn(&T::member)
@Leith:mem\u fn
是一个绑定函数,允许您将成员指针转换为函数对象,然后由std::function
存储。它是std::bind(&T::member,_1,_2,_3,…)
的简写形式,只是您不需要知道将有多少个参数。使用mem\u fn
,它只是std::mem\u fn(&T::member)
。