2013-04-23 71 views
4

我有對在spreadsheet OBJ的疊層:轉換::對<性病:: basic_string的<炭的std :: char_traits <char>

std::stack< std::pair<std::string, std::string> > undoStack; 

而我試圖彈出堆棧,並將其分配給另一對:

std::pair<std::string, std::string> change = spreadsheets.at(i).undoStack.pop(); 

而且我收到此錯誤:

error: conversion from ‘void’ to non-scalar type ‘std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >’ requested 

這裏怎麼回事?

回答

9

stack::pop()返回void,但您試圖將其分配給一個變量。您需要先撥打top()才能將元素從堆疊中彈出。

std::pair<std::string, std::string> change = spreadsheets.at(i).undoStack.top(); 
spreadsheets.at(i).undoStack.pop(); 

你應該看看文檔std::stack來熟悉它的成員函數和使用。

documentation for std::stack

+0

啊完美。我認爲'pop'與c#或java中的一樣。 – Deekor 2013-04-23 03:19:30

+1

我包含了一個指向堆棧文檔的鏈接。整個站點是C++和標準庫的重要參考。 – 2013-04-23 03:21:18

1

pop()堆棧的函數返回void。你有類型不匹配。

您應該改用undoStack.top()

相關問題