c++ - 从函数双端队列上的迭代器获取函数指针

标签 c++ function pointers casting iterator

我正在尝试构建一个简单的赤字循环调度程序,现在我正在尝试获取运行时间最少的函数。当我尝试将迭代器转换为指针时,收到返回给我的“总线错误”。下面是我的代码,ptof 只是一个 typedef 指针,指向我的双端队列中的函数类型,State 包含每个进程的信息。我究竟做错了什么?非常感谢您的帮助。

ptof leastTime(deque<ptof> fnc, map<ptof, State *> s){
double leastElapsed= 100000000;
ptof  f;

deque<ptof>::iterator it;
for (it=fnc.begin() ; it < fnc.end(); it++ ){
if(s[*it]->elapsed<leastElapsed){
     f = (ptof)(&(*it)); 
cout<< s[f]->name<<endl;
     }
  }
return f;
}

最佳答案

f = (ptof)(&(*it)); 

那将获取函数指针的地址。尝试

f = *it;

在任何情况下,都要避免 C 风格的转换。如果您改为尝试 static_cast,编译器会告诉您强制转换无效。

关于c++ - 从函数双端队列上的迭代器获取函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4189844/

相关文章:

c++ - 当我使用 expect 运算符时,我会使用 spirit X3 获得更快的解析器吗

C++:创建一个局部对象数组

javascript - 仅使用一个 JavaScript 函数更改标签中的字体大小和文本

c++ - 关于通过 const 指针/const 引用传递的 2 个快速问题

c++ - 统一初始化以调用初始化程序列表以外的构造函数

function - 在postgresql函数中循环遍历数据库

javascript - 如何确保特定的单击事件处理程序在所有其他附加的单击处理程序之后执行?

c++ - 不使用 vector 的动态字符串数组

c - 将二维指针数组传递给函数 C

c++ - 如何在事件发生时启动线程并正确关闭他们的手