在 C++ 中定义 boost 库无锁队列时的声明错误

问题描述

我是 C++ 新手,我正在尝试使用 boost 库(1.53 版)在 C++98 中创建一个无锁队列。当我在 c++98 中编译我的代码时,出现以下错误

error: ‘q’ was not declared in this scope
  boost::lockfree::queue<T *,boost::lockfree::capacity<SIZE>> q;

当我删除容量选项 (boost::lockfree::capacity) 时,错误似乎消失了。我在这里错过了什么并做错了什么?

导致错误的那一行在构造函数中自己存在,如下:

    boost::lockfree::queue<T *,boost::lockfree::capacity<SIZE>> q;

解决方法

在 C++11 之前,任何地方(包括模板参数列表)中的 <<>> 都会被解释为运算符。您需要用空格分隔每个括号:

boost::lockfree::queue<T *,boost::lockfree::capacity<SIZE> > q;

使用 C++11 或更高版本,您的原始行应按原样编译。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...