我是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副本来存储不同对象的速度。
预先感谢
答案 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) {}
};