c++ - 分配给全局范围内的函数指针
问题描述
我正在尝试在 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;
}
解决方案
问题是您试图在任何功能之外执行此操作。试试看:
int main()
{
funcp = times;
return 0;
}
您的问题对于 C++17 没有什么特别之处。为了使其更现代和更易于阅读,您可以使用以下using
代替typedef
:
using fptr = int (*)(int, int);
推荐阅读
- python - 如何将 .format() 打印输出存储到 var 以供重用
- javascript - 如何突出显示 fullcalendar timegridview 当前事件?
- .htaccess - 可能的 HTACCESS 问题无法正确提供子页面
- css - 将鼠标悬停在 img、其他 img 和 h2 上时使 img 旋转
- java - 如何从 double[][] 生成频谱图
- javascript - 如何在侧边栏中的下拉列表中获取所有工作表的列表
- javascript - 更新 am4charts.XYChart 数据
- python - 悬停在条形图中的条形元素
- javascript - 如何将当前日期放入引导程序 datetimepicker
- javascript - https.request 在回调下不起作用 - nodeJS