使用std::function返回函数

Use of std::function for function return

本文关键字:函数 返回 function 使用 std      更新时间:2023-10-16

我遇到了c++ 11风格的使用std::function方法的函数指针。下面的场景适用于函数指针的旧方法,但不适用于新方法。

#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;
}

我做错了什么吗?

我猜你之前写过:

typedef int arithmeticFcn(int, int);

,并称之为函数指针

不是函数指针。它从来不是一个函数指针。您将arithmeticFcn设置为函数类型,这就是您如何能够像上面所做的那样使用它的原因。

但这里:

function<int(int,int)> arithmeticFcn;

您没有创建类型。您正在创建一个函子,名为arithmeticFcn

我想你的意思是:

typedef function<int(int,int)> arithmeticFcn;