C++ 使用std::function返回函数

C++ 使用std::function返回函数,c++,c++11,C++,C++11,我使用std::function方法遇到了C++11风格的函数指针 #include <functional> using namespace std; function<int(int,int)> arithmeticFcn; int add(int x,int y) { return x + y; } arithmeticFcn getOperation(char op) { switch (op) { case '+': return add; break; d

我使用std::function方法遇到了C++11风格的函数指针

#include <functional>
using namespace std;
function<int(int,int)> arithmeticFcn;

int add(int x,int y)
{
return x + y;
}

arithmeticFcn getOperation(char op)
{
switch (op) {
case '+':
return add;
break;
default:
return add;
break;
}
}

int main()
{
int x = 10,y = 20;
char op1;
cin >> op1;
arithmeticFcn Fcn = getOperation(op1);
cout << Fcn(x,y) << endl;
return 0;
}
#包括
使用名称空间std;
函数算术;
整数相加(整数x,整数y)
{
返回x+y;
}
算术FCN getOperation(字符运算)
{
开关(op){
格“+”:
返回添加;
打破
违约:
返回添加;
打破
}
}
int main()
{
int x=10,y=20;
字符op1;
cin>>op1;
算术Fcn Fcn=getOperation(op1);

cout我要冒险一试,猜你之前写过:

typedef int arithmeticFcn(int, int);
并将其称为函数指针

它不是函数指针。它从来不是函数指针。您将
arithmetricfcn
设置为函数类型,这就是您能够像上面所做的那样使用它的方式

但在这里:

function<int(int,int)> arithmeticFcn;

<代码>算术MICFCN < /代码>不命名类型。<代码>返回;中断;< /Cord> >!“<代码>断裂/代码>永远不会达到。”下面的场景[]…用新的TIGIE失败。“这不是一个可接受的问题描述。@ KeRekSb:复制/粘贴方法学习C++,在它的Besti更喜欢术语邪教编程。它有更多的比萨饼。
typedef function<int(int,int)> arithmeticFcn;