我确信这个问题会被问到很多 - 实际上我在搜索问题时发现了10个以上的答案。但是当队列为空时,所有人都指出不要调用queue.front()。
我有以下代码:
std::queue<Message*> MessageQ; //declaring the queue
//...
MessageQ.push(Msg); //filling the Queue
//...
if (!MessageQ.empty())
{
Message* ToReturn = MessageQ.front();
MessageQ.pop();
return ToReturn;
}
return 0;
我得到了#34; deque迭代器而不是dereferencable&#34; .front()行的错误。
使用queue.front()时,还有哪些其他问题可能会触发此错误?
我甚至尝试过评论前线 - 消息会像它应该弹出一样。
感谢您的时间。
答案 0 :(得分:4)
对不起,这对我来说是个愚蠢的错误。我在构造函数的某个地方有一个memset(),它用空堆栈的数据覆盖了队列,因为我今天下午更改了类型。
经验教训,谢谢你的回答!