2016-04-08 33 views
-3

我有一個MyClass類{}下面創建一個deque:我希望返回一個deque條目的值。爲什麼是「Void」?

std:deque<UINT8*>myDeque; 

我創建了一個UINT8指針

UINT8* up = new rx[20]; 

我把它放在:

myDeque.push_back(up); 

現在SUM函數我想返回一個條目:

UINT8* myClass::somefuntion() 
{ 
    return(myDeque.pop_front()); 
} 

     ^

我得到一個錯誤在光標抱怨,我不能一個void *轉換爲 一個UINT8*,但我不明白它是如何認爲我嘗試轉換是

什麼是要通過適當的方式/返回一個條目到我創建的deque?

順便說一句,這是使用Visual Studio 2015年更新2在我已經包括了一個MFC C++項目:

#include <deque>

+2

「我應該做些什麼來完成這項工作?」 - 你應該閱讀'std :: deque'的文檔。 –

+5

我投票結束這個問題作爲題外話,因爲它通過閱讀文件是輕而易舉的負責。 –

+0

'std :: deque :: pop_front'不返回前端值。使用'front()'得到它,然後'pop_front()' – vu1p3n0x

回答

2

std::deque接口provides separate functions去除和觀看最後和第一要素:

  • std::deque::front()返回第一個元素。
  • std::deque::back()返回最後一個元素。

,並刪除他們,你需要調用pop_x方法:

  • std::deque::pop_front()刪除第一個元素,但沒有返回。
  • std::deque::pop_back()刪除最後一個元素,但不返回任何內容。
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; 
} 
+0

我明白了。你在說成員函數pop_front()只是一個動作。首先使用deque。我的錯。我認爲pop_front()都做到了。 –

+1

@MichaelMurdock是的,它只是一個動作。如果你是evr不確定一個函數究竟做了什麼,你總是可以查看它[cppreference.com](http:// en。cppreference.com/w/) – NathanOliver

相關問題