我有一个X类,其中有这个方法:
void setRxHandler(void (*h)(int));
我希望您能够将一个在类Y的实例中存在的成员函数传递给它。
void comm_rxHandler(int status);
我尝试了以下操作:
x.setRxHandler(comm_rxHandler)
但它会得到以下编译错误(我正在使用Qt):
错误:无法找到符合调用“X :: setRxHandler(<未解析的重载函数类型>)”的函数
那么,我该怎么做呢?
我注意到如果我将comm_rxHandler(类Y)声明为静态的,就不会出现错误。但是我想让comm_rxHandler成为一个非静态方法。另外,我希望setRxHandler方法(类X)是通用的而不是特定于类的。因此,我不能将该方法声明为:
setRxHandler(void (Y::*h)(int))
如何做到这一点?你能帮我吗?
谢谢!
std::function<void(int)>
,它适用于各种可调用对象。 - Kerrek SB