【发布时间】:2017-12-10 04:21:08
【问题描述】:
class A
{
public:
A() {}
void print(std::function<void(int)> func);
virtual ~A() {}
};
void A::print(std::function<void(int)> func)
{
func();
}
void printInt(int a)
{
std::cout << a << std::endl;
}
int main()
{
A a;
a.print(std::bind(&printInt, 3));
return 0;
}
假设我有这个代码示例。如何将 void 方法 printInt(int a) 传递给 A::print(std::function func) 并在那里调用已传递的函数?我得到“候选人期望 1 个参数,提供 0 个参数”,但我不知道如何处理。
编辑:
我应该提到它,但我的目标是传递该整数,但实际上我不知道如何传递。当我尝试这样的事情时:
void A::print(std::function<void(int a)> func)
{
func(a);
}
我得到“错误:‘a’没有在这个范围内声明”。
【问题讨论】:
-
您正在调用一个函数,该函数采用不带参数的
int(func())。