Как правильно использовать std :: queue в качестве элемента в шаблоне класса? - PullRequest
0 голосов
/ 08 сентября 2010

Я достаточно новичок в C ++ и имею ограниченный опыт работы с шаблонами.В данный момент я пытаюсь реализовать параллельную очередь на основе приведенного примера здесь .У меня возникают проблемы при компиляции, и я получаю сообщение о том, что «ISO C ++ запрещает объявление« очереди »без типа», даже после того, как я сократил код до следующего простого примера:

template<typename Data> class concurrent_queue {
private:
    std::queue<Data> the_queue;

public:
    void push(Data const& data) {
        the_queue.push(data);
    }

    bool empty() const {
        return the_queue.empty();
    }

    void pop(Data& popped_value) {
        popped_value=the_queue.front();
        the_queue.pop();
    }
};

int main(int argc, char** argv) {
    concurrent_queue<std::string> Q;

    // Simple test code will go here
}

Янемного озадачен этим, так как я предоставил тип «Данные» для очереди.Может кто-нибудь помочь мне указать, что я сделал неправильно?

Ответы [ 2 ]

3 голосов
/ 08 сентября 2010

Вы включили <queue>?Похоже, компилятор не знает, что std::queue это шаблон.Поэтому он думает, что вы определяете его в третьей строке, но не может понять, какой будет тип queue.

2 голосов
/ 08 сентября 2010

Вам не хватает #include <queue> и #include<string> в начале файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...