m0_61606978 2021-10-14 22:45 采纳率: 0%
浏览 12
已结题

关于c++返回函数指针问题

#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循环。
请教下这是什么原因导致的?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 10月22日
    • 创建了问题 10月14日

    悬赏问题

    • ¥15 如何让企业微信机器人实现消息汇总整合
    • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
    • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
    • ¥15 TLE9879QXA40 电机驱动
    • ¥20 对于工程问题的非线性数学模型进行线性化
    • ¥15 Mirare PLUS 进行密钥认证?(详解)
    • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
    • ¥20 想用ollama做一个自己的AI数据库
    • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
    • ¥15 请问怎么才能复现这样的图呀