无法在结构中包含circular_buffer

问题描述 投票:4回答:2

我是cpp的新手。我想把“boost :: circular_buffer histpos(5);”有5个空格,可以在cpp结构中存储5个元素作为成员。

我试试这个:

typedef struct histposRecorder{
   int32_t track_id;
        boost::circular_buffer<float> histpos(5);

}coRecord;

我收到此错误:

error: expected identifier before numeric constant
        boost::circular_buffer<float> histpos(5);
error: expected ‘,’ or ‘...’ before numeric constant

这是我指的是circular_buffer网站:https://www.boost.org/doc/libs/1_49_0/libs/circular_buffer/doc/circular_buffer.html

请告诉我如何解决它

我想把它放在结构中的原因是因为我将有很多不同的circular_buffer副本来存储不同对象的速度。

提前致谢

c++ c++11
2个回答
5
投票

可以使用大括号(或等于)初始化程序since C++11在类/结构定义中初始化成员:

#include <boost/circular_buffer.hpp>

struct coRecord {
  int32_t track_id;
  boost::circular_buffer<float> histpos {5};
};

2
投票

尝试在别处进行初始化:

struct coRecord {
  int32_t track_id;
  boost::circular_buffer< float > buffer;

  coRecord() : buffer(5) {}
};

在类定义中,您只能声明成员变量,但不能初始化它们。相反,通过提供这样的默认构造函数,您仍然可以执行所需的初始化:

coRecord recorder; // automatically reserves 5 places in the buffer
© www.soinside.com 2019 - 2024. All rights reserved.