无法在结构中包含circle_buffer

时间:2019-04-02 07:40:04

标签: c++ c++11

我是cpp的新手。我希望输入“ boost :: circular_buffer histpos(5);”有5个空间,可将5个元素存储在cpp结构中作为成员。

我试试这个:

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

请教我如何解决

之所以要将其放置在结构中,是因为我将拥有很多不同的circle_buffer副本来存储不同对象的速度。

预先感谢

2 个答案:

答案 0 :(得分:5)

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

#include <boost/circular_buffer.hpp>

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

答案 1 :(得分:2)

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

print(my_camera_params_gt)
print('#####')
print(my_camera_params_initial)
print('#####')
print(res.x[:18].reshape(2,9))

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

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

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