Вложенные контейнеры: почему я не могу получить доступ к стеку в верхней части очереди стека? C ++ - PullRequest
0 голосов
/ 08 сентября 2018

Итак, я создал очередь стеков, используя STL, следующим образом:

void main()
{
    queue<stack<string>> qos;
    stack<string> words;
    words.push("hey");
    qos.push(wors);
    cout<< (qos.pop()).top()<<endl;
}

Ожидаемое поведение:

возвращает слово эй

Фактический результат:

ошибка: базовый тип ссылки на элемент 'void' не является структурой или объединением

У меня вопрос, почему он не возвращает то, что я ожидал, я имею в виду, поскольку qos.pop () возвращает элемент стека, а стек имеет функцию-член top ();

1 Ответ

0 голосов
/ 08 сентября 2018

Ваши переменные words и qos никак не связаны.

Также main() должен иметь тип возврата int.

Причиной того, что вы получаете сообщение об ошибке, является то, что queue<>::pop не возвращает значение, которое может быть вызвано top().

Вы, вероятно, хотите

#include <iostream>
#include <queue>
#include <stack>
#include <string>

int main()
{
    std::queue<std::stack<std::string>> qos;
    std::stack<std::string> words;

    words.push("hey");
    qos.push(words);

    std::cout << qos.front().top() << '\n';
}
...