невозможно включить циркулярный буфер в структуру - PullRequest
4 голосов
/ 02 апреля 2019

я новичок в cpp.Я хочу поставить "boost :: циркуляр_буффер 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

этовеб-сайт round_buffer, на который я ссылаюсь: https://www.boost.org/doc/libs/1_49_0/libs/circular_buffer/doc/circular_buffer.html

, пожалуйста, покажите мне, как это решить.хранить скорости различных объектов.

Заранее спасибо

Ответы [ 2 ]

5 голосов
/ 02 апреля 2019

Члены могут быть инициализированы в определении класса / структуры с использованием инициализатора скобок (или равно) начиная с C ++ 11 :

#include <boost/circular_buffer.hpp>

struct coRecord {
  int32_t track_id;
  boost::circular_buffer<float> histpos {5};
};
2 голосов
/ 02 апреля 2019

Попробуйте выполнить инициализацию в другом месте:

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

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

В своем определении класса вы можете только объявить переменные-члены, но не инициализировать их.Вместо этого, предоставив такой конструктор по умолчанию, вы все равно можете выполнить необходимую инициализацию:

coRecord recorder; // automatically reserves 5 places in the buffer
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...