我在spreadsheet
obj:
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
这里出了什么问题?
答案 0 :(得分:11)
stack::pop()
返回void但您尝试将其分配给变量。您需要调用top()
以便在将其从堆栈中弹出之前检索该元素。
std::pair<std::string, std::string> change = spreadsheets.at(i).undoStack.top();
spreadsheets.at(i).undoStack.pop();
您应该查看std::stack
的文档,以熟悉它的成员函数和使用。
答案 1 :(得分:1)
您的pop()
堆栈函数返回void
。你有类型不匹配。
您应该致电undoStack.top()
。