Boost库队列问题

时间:2016-09-05 20:00:09

标签: c++ boost

我正在尝试使用来自boost库的队列。

当我的队列定义如下所示时,编译通过,一切都按预期工作。

#include <boost/lockfree/queue.hpp>
#include <string>
#include <iostream>

boost::lockfree::queue<int> queue1(128);
boost::lockfree::queue<int> queue2(128);

但是当我更改我的代码时,如下所示(即将队列包装在一个结构中),编译失败并出现以下错误。

#include <boost/lockfree/queue.hpp>
#include <string>
#include <iostream>

typedef struct stack { 
  int top;
  boost::lockfree::queue<int> queue1(128);
  boost::lockfree::queue<int> queue2(128);
} stack;


~/prgms$ g++ two_queue_to_stack.cpp 
two_queue_to_stack.cpp:9:38: error: expected identifier before numeric constant 
boost::lockfree::queue<int> queue1(128);
                                  ^
two_queue_to_stack.cpp:9:38: error: expected ',' or '...' before numeric constant 
two_queue_to_stack.cpp:10:38: error: expected identifier before numeric constant 
boost::lockfree::queue<int> queue2(128);
                                  ^
two_queue_to_stack.cpp:10:38: error: expected ',' or '...' before numeric constant

上述定义有什么问题?我错过了一些基本的东西吗?

1 个答案:

答案 0 :(得分:2)

使用member initializer lists

struct stack { 
  int top;
  boost::lockfree::queue<int> queue1, queue2;

  // initialize the member objects, queue1, queue2, during construction of stack
  stack() : queue1(128), queue2(128) {
  }