我对C ++相当陌生,并且对模板的经验有限。目前,我正在尝试根据提供的示例here实现并发队列。我在编译它时遇到了问题,并且不断收到错误消息,即使我将代码简化为以下简单示例,也仍然显示“ 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
}


我对此感到有些困惑,因为我为队列提供了“数据”类型。有人可以帮我指出我做错了什么吗?

最佳答案

您在文件的开头缺少#include <queue>#include<string>

关于c++ - 如何在模板类中正确使用std::queue作为元素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3666199/

10-11 22:47
查看更多