分配给全局范围内的函数指针
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);
我正在尝试用 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);