简体   繁体   English

从&#39;void&#39;转换为非标量类型&#39;std :: pair <std::basic_string<char, std::char_traits<char>

[英]conversion from ‘void’ to non-scalar type ‘std::pair<std::basic_string<char, std::char_traits<char>

I have a stack of pairs in a spreadsheet obj: 我在spreadsheet obj中有一堆对:

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

And I am trying to pop the stack and assign it to another pair: 我试图弹出堆栈并将其分配给另一对:

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

And I am getting this error: 我收到这个错误:

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

Whats going wrong here? 这里出了什么问题?

stack::pop() returns void but you are attempting to assign it to a variable. stack::pop()返回void但您正在尝试将其分配给变量。 You need to call top() in order to retrieve the element before you pop it off the stack. 您需要调用top()以便在将其从堆栈中弹出之前检索该元素。

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

You should look at the documentation for std::stack to get familiar with it's member functions and use. 您应该查看std::stack的文档以熟悉它的成员函数和使用。

documentation for std::stack std::stack文档

Your pop() function of the stack returns void . 堆栈的pop()函数返回void you have type mismatch. 你有类型不匹配。

You should call undoStack.top() instead. 你应该调用undoStack.top()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 错误:从“Mstream”转换为非标量类型“std::string {aka std::basic_string<char> }' 请求</char> - error: conversion from ‘Mstream’ to non-scalar type ‘std::string {aka std::basic_string<char>}’ requested 从&#39;std :: wstring {aka std :: basic_string <wchar_t> }&#39;转换为非标量类型&#39;UString {aka std :: basic_string <char> }&#39; - conversion from ‘std::wstring {aka std::basic_string<wchar_t>}’ to non-scalar type ‘UString {aka std::basic_string<char>}’ ostream和运算符std :: basic_string <char, std::char_traits<char> ,std :: allocator <char> &gt;? - ostream and operator std::basic_string<char, std::char_traits<char>, std::allocator<char>>? 错误:从 &#39;const char&#39; 转换为非标量类型 &#39;std::string&#39; {aka &#39;std::__cxx11::basic_string<char> &#39;} 请求 - error: conversion from ‘const char’ to non-scalar type ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} requested 1 IntelliSense:没有合适的构造函数可以从“bool”转换为“std :: basic_string” <char, std::char_traits<char> ,std :: allocator <char> &gt;” - 1 IntelliSense: no suitable constructor exists to convert from “bool” to “std::basic_string<char, std::char_traits<char>, std::allocator<char>>” “ str2Int(std :: basic_string <char, std::char_traits<char> ,std :: allocator <char> &gt; const&)”,引用自: - “str2Int(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)”, referenced from: C++ std::basic_string/char_traits 特化 - C++ std::basic_string/char_traits specialization main.cpp || 未定义对`MyClass :: loadDatas(std :: basic_string的引用 <char, std::char_traits<char> ,std :: allocator <char> &gt;)&#39;| - main.cpp|| undefined reference to `MyClass::loadDatas(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'| 未定义对`librarymanager :: getBook(std :: basic_string的引用 <char, std::char_traits<char> ,std :: allocator <char> &gt;) - undefined reference to `librarymanager::getBook(std::basic_string<char, std::char_traits<char>, std::allocator<char> >) 未定义对`readVector(std :: __ cxx11 :: basic_string的引用) <char, std::char_traits<char> ,std :: allocator <char> &gt;)” - undefined reference to `readVector(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM