我在类myClass {}中创建了一个deque:
std:deque<UINT8*>myDeque;
我创建了一个UINT8指针
UINT8* up = new rx[20];
我推开它:
myDeque.push_back(up);
现在在sum函数中我希望返回一个条目:
UINT8* myClass::somefuntion()
{
return(myDeque.pop_front());
}
^
我在插入符号时收到错误,抱怨我无法将void *转换为
一个UINT8*
,但我不明白它是怎么想的,我试图转换那个
将条目传递/返回到我创建的双端队列的正确方法是什么?
顺便说一句,这是在我包含的MFC C ++项目中使用Visual Studio 2015 Update 2:
#include <deque>
答案 0 :(得分:3)
std::deque::pop_front
不返回您弹出的元素,它返回void
。试图返回该返回的
return(myDeque.pop_front());
确实为您提供了非法转换错误。您需要做的是将指针存储到front
的临时变量中,调用pop_front
,然后返回指针。
UINT8* myClass::somefuntion()
{
UINT8* temp = myDeque.front()
myDeque.pop_front();
return temp;
}
答案 1 :(得分:2)
std::deque
界面provides separate functions,用于删除和查看上一个和第一个元素:
std::deque::front()
返回第一个元素。std::deque::back()
返回最后一个元素。要删除它们,您需要调用pop_x
方法:
std::deque::pop_front()
删除第一个元素,但不返回任何内容。std::deque::pop_back()
删除最后一个元素,但不返回任何内容。