分配给全局范围内的函数指针

Assignment to a function pointer in the global scope

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

我的代码:

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

问题是您正试图在任何函数之外执行此操作。试试看:

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

你的问题对于 C++17 来说没有什么特别之处。为了使其更现代和更易于阅读,您可以使用 using 而不是 typedef:

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