包含 STL::deque 的 C++ STL::map无法从“void”转换为 class*

问题描述

尝试将元素从双端队列分配给用户定义的类时出现以下错误

    map<unsigned int,std::deque<Order*>>::iterator itBuyPrices =buyPrices.begin();
    Order *buyOrder;
    buyOrder = itBuyPrices->second.pop_back();

分配行(第 3 行)处的错误错误 C2440“=”:无法从“void”转换为“Order *”

解决方法

deque::pop_back() 返回 void,即什么都没有。您需要先使用 deque::back() 访问队列中的最后一项,然后再调用 pop_back() 将其删除,例如:

map<unsigned int,std::deque<Order*>>::iterator itBuyPrices = buyPrices.begin();
Order *buyOrder = itBuyPrices->second.back();
itBuyPrices->second.pop_back();

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...