使用std::function返回函数
Use of std::function for function return
我遇到了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;
相关文章:
- 从函数返回const char*数组
- 检查函数返回类型是否与STL容器类型值相同
- 从 c 或 cpp 系列子函数返回到主函数
- 从函数返回任意简单类型的数据
- 警告:在函数返回类型 [-Wignore 限定符] 时忽略类型限定符
- 从 C++ 中的函数返回数组地址问题
- VirtDisk.h QueryChangesVirtualDisk() 函数返回 RangeCount 为 0
- 为什么glGetSubroutineIndex为不同的函数返回相同的值?
- 在 c++ 中将函数返回类型指定为模板参数
- 从封装在对象中的函数 C++ 返回时为空的列表
- 为什么向量内部的指针在从函数返回时会发生变化?
- 函数返回的 rvalue 引用(表达式)是 xvalue - 但没有标识?
- 程序中的布尔函数返回输入的范围无论如何都是无效的
- 寿命延长从函数返回引用
- 程序不向函数返回值
- 字符串函数返回奇怪的值
- 类的大问题,以及从空函数c++返回
- 为什么在尝试测量函数返回所需的时间时,我的运行时编号是错误的?
- C++二叉搜索树模板从函数返回节点
- NVCC 错误:string_view.h:constexpr 函数返回是非常量