#include<iostream>
#include<vector>
#include<string>
using namespace std;
using pp = int(*)(int, int);
typedef int(*p)(int a, int b);
int pluss(int a, int b);
int multiplication(int a, int b);
int division(int a, int b);
int subtract(int a, int b);
int(*back_func(const string& str))(int, int);
int main(void)
{
vector<p>a;
a.push_back(back_func("pluss"));
a.push_back(multiplication);
a.push_back(division);
a.push_back(subtract);
for (size_t i = 0; i < a.size(); i++)
cout << a[i](1, 1);
cout << endl;
vector<int>bbb;
return 0;
}
int pluss(int a, int b)
{
return a + b;
}
int multiplication(int a, int b)
{
return a*b;
}
int division(int a, int b)
{
return a/b;
}
int subtract(int a, int b)
{
return a - b;
}
int(*back_func(const string& str))(int , int)
{
decltype(pluss)* pp=0;
if (str == "subtract")
pp=subtract;
else if (str == "pluss")
pp= pluss;
if (str == "multiplication")
pp= multiplication;
else if (str == "division")
pp= division;
return pp;
}
如果将back_func函数中的if条件后的pp= 改成return (直接返回函数指针)会发生运行时错误,出错行为主函数中的for循环。
请教下这是什么原因导致的?