vector<shared_ptr> ptrs, ptrs.pop_back() returns void

198
01 декабря 2017, 05:54

Есть следующий класс:

class InteractiveMode {
public:
    /.../
private:
   static vector<std::shared_ptr<InteractiveMode>> stackStates;
    /.../
};

И два метода:

 void InteractiveMode::Life() {
    while(1) {
        /.../
        auto state = std::make_shared<InteractiveMode>(*this);
        stackStates.emplace_back(state);
    }
}
void InteractiveMode::back() {
    if (stackStates.empty()) {
        std::cout << "Stack of states is empty!";
        exit(EXIT_FAILURE);
    }
    shared_ptr<InteractiveMode> ptr = stackStates.pop_back();
    /.../
}

При компиляции получаю следующую ошибку:

error: conversion from 'void' to non-scalar type 'std::shared_ptr' requested shared_ptr ptr = stackStates.pop_back();

То есть stackStates.pop_back() возвращает void вместо нужного мне shared_ptr<...>. Что я сделал не так?

Answer 1

Неправильно пытаетесь получить значение из void-функции.

pop_back только удаляет, ничего не возвращая. Если нужно последнее значение - используйте back().

READ ALSO
вопросы по json парсингу

вопросы по json парсингу

Есть ответ, в котором перечень валют с значениямиНа случай если список валют увеличится, я в заранее хотел распарсить и сохранить массив...

312
Как в Gson взять список?

Как в Gson взять список?

Добрый день у меня возникла проблема, я через jsoup взял jsonВот так

247
Как сохранить и загрузить данные Android

Как сохранить и загрузить данные Android

Доброго времени сутокЕсть класс Time с 2-мя полями типа String, на основе этого класса создан ArrayList, Custom Adapter который наследует BaseAdapter, ListView в котором...

408