无法在结构中包含circular_buffer

unable to include circular_buffer in structure

本文关键字:circular buffer 包含 结构      更新时间:2023-10-16

我是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++11 起,可以使用大括号(或等于(初始值设定项在类/结构定义中初始化成员:

#include <boost/circular_buffer.hpp>
struct coRecord {
  int32_t track_id;
  boost::circular_buffer<float> histpos {5};
};

尝试在其他地方进行初始化:

struct coRecord {
  int32_t track_id;
  boost::circular_buffer< float > buffer;
  coRecord() : buffer(5) {}
};

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

coRecord recorder; // automatically reserves 5 places in the buffer