【发布时间】:2014-05-19 16:31:13
【问题描述】:
我确信这个问题被问了很多 - 事实上,我在谷歌搜索问题时找到了 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;
我在 .front() 行收到“deque iterator not dereferencable”错误。
在使用 queue.front() 时还有哪些其他问题可能会触发此类错误?
我什至尝试评论前线 - 消息按原样弹出。
感谢您的宝贵时间。
【问题讨论】:
-
您的问题将受益于Minimal, Complete, Verifiable Example。请创建一个,以便我们更好地帮助您。您甚至可以在创建时自己找到答案。
-
MessageQ是如何在您的代码中准确声明的? -
MessageQ 的类型是什么?它包含什么类型的项目?
-
如果
Message是一个迭代器,不要声明Message * ToReturn,而只声明Message ToReturn -
您是否在一个线程中将内容推入队列,然后在另一个线程中弹出?