我试过这个,但它不起作用
#include <iostream>
using namespace std;
typedef int(*func)(int,int);
void test(func fun, int k, int b)
{
int result = fun(k, b);
cout << "result: " << result;
}
int main()
{
test([](int k, int b){ return k*2 + b},2,3);
}
我应该怎么做才能让它工作?
这个问题已经解决了:
这个问题是无法将 'anonymous-namespace':: 转换为 'func',遵循 Joachim' 的建议,使用std::function
可以修复它。
这是固定代码:
#include <iostream>
#include <functional>
using namespace std;
int test(std::function<int (int,int)> fun, int k, int b)
{
return fun(k, b);
}
int main()
{
int result = test(
[](int k, int b)
{
return k*2 + b;
},2,3);
cout << "result: " << result;
return 0;
}