2013-04-23 76 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()

相关问题