c++ - 如何正确使用 std::queue 作为模板类中的元素?

标签 c++ templates

我是 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
}

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

最佳答案

你有没有包括<queue> ?听起来编译器不知道 std::queue是一个模板。因此它认为你在第三行定义它,但它无法弄清楚 queue 的类型是什么。会是。

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

相关文章:

c++ - 是否可以更改专用模板函数的返回类型?

c++ - 具有不同模板类型的子类的多态性

c++ - 虚函数上下文中的支配是什么?

c++ - 当我运行这段代码时它是 "stopped working"。我想从 API 调用这个简单的函数

具有侵入式链表的 C++ 循环依赖

c++ - 模板和 vector 错误

c++ - 没有匹配函数调用 ‘std::less<int>::less(const int&, const int&)’

c++ - 如何让 GCC/Clang 在保留标识符上出错

c++ - 在哪里可以找到不同 STL 容器复杂性(性能)的比较?

c++ - 在Qt中获取qrc文件的路径