我认为如果我把代码放在首位会更有意义:
我有一个成员变量定义如下:
std::queue<void (*)()> fptrs;
...我正试图像这样弹出一个指针:
void (*f)() = fptrs.pop();
我得到的'警报'是:
Assigning to 'void (*)()' from incompatible type 'void'
似乎我没有将函数指针放入我的队列中,或者它们正在弹出奇怪的变换。无论哪种方式,我都不确定如何解决这个问题,而且我已经摆弄了一下。
感谢您的帮助。
答案 0 :(得分:1)
std::queue::pop()
返回void
。您需要拨打std::queue::front()
,然后拨打std::queue::pop()
。
为了便于阅读,我建议使用typedef
作为函数指针。
答案 1 :(得分:0)
#include <iostream>
#include <queue>
using namespace std;
typedef void (*pFun)();
void fun1(){ printf("fun1\n"); }
void fun2(){ printf("fun2\n"); }
int main()
{
queue<pFun> d;
d.push(fun1);
d.push(fun2);
pFun fun = d.front();
fun();
}