【发布时间】:2010-11-15 23:23:46
【问题描述】:
我正在尝试构建一个简单的赤字循环调度程序,现在我正在尝试获取运行时间最少的函数。当我尝试将迭代器转换为指针时,我收到“总线错误”。下面是我的代码,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;
}
【问题讨论】:
-
ptof 只是指向函数的指针的 typedef 吗?如果我们能看到这一点会很有帮助(并且一个最小的工作示例将使事情更容易诊断)
-
我对 c 风格的演员表也很怀疑——它可能隐藏了你不希望它隐藏的各种邪恶的东西。获取迭代器指向的地址也很奇怪。
-
哇,您知道您实际上是在将这些参数复制到函数中吗? How to pass objects to functions in C++?
-
你能发布确切的错误信息吗?
-
请:(A) 正确缩进代码(这很难阅读),(B) 添加必要的声明,以便我们可以将其粘贴到我们的编辑器中并尝试编译它。
标签: c++ function pointers casting iterator