我希望返回值deque条目。为什么它是" Void"?

时间:2016-04-08 16:39:16

标签: c++ stl visual-studio-2015 deque

我在类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>

2 个答案:

答案 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()删除最后一个元素,但不返回任何内容。