簡體   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>

我在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

這里出了什么問題?

stack::pop()返回void但您正在嘗試將其分配給變量。 您需要調用top()以便在將其從堆棧中彈出之前檢索該元素。

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

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

std::stack文檔

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

你應該調用undoStack.top()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM