首页 > 解决方案 > 分配给全局范围内的函数指针

问题描述

我正在尝试在 C++ 中定义函数指针的类型。但是,一旦我将指针定义funcp为 a fptr,我就无法将指针重新定义为不同的函数times. 该程序甚至无法编译。这是因为我必须nullptr在重新分配times给之前删除funcp

我的代码:

#include <iostream>
using namespace std;

typedef int (*fptr)(int, int);

int times(int x, int y)
{
    return x*y;
}

fptr funcp = nullptr;

funcp = times;

int main()
{
    return 0;
}

标签: c++syntax-errorfunction-pointersglobal-scope

解决方案


问题是您试图在任何功能之外执行此操作。试试看:

int main()
{
    funcp = times;
    return 0;
}

您的问题对于 C++17 没有什么特别之处。为了使其更现代和更易于阅读,您可以使用以下using代替typedef

using fptr = int (*)(int, int);

推荐阅读