我正在尝试使用来自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
上述定义有什么问题?我错过了一些基本的东西吗?
答案 0 :(得分:2)
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) {
}