2015-05-18 2 views
0

Я читаю в 14 байт сообщения с устройства и хранить их в массиве bitsets ...Как создать очередь массивов битцет?

bitset<8> currentMessage[14]; 

Я хочу, чтобы создать очередь из этих сообщений. (В идеале я хочу последние 10 сообщений, но я думаю, что это может быть целый вопрос? limit size of Queue<T> in C++.)

Как создать эту очередь?

Я пытался ...

std::queue<bitset> buttonQueue; 

, но я получил следующие ошибки:

  • ошибка C2955: 'зЬй :: BitSet': использование шаблона класса требует список аргументов шаблона
  • ошибка C2133: 'buttonQueue': неизвестный размер
  • ошибка C2512: 'std :: queue': не существует соответствующего конструктора по умолчанию

(N.B. Я заметил круговой буфер Boost, может ли это быть более подходящей альтернативой тому, что я пытаюсь сделать?)

Я довольно новичок в C++, может ли кто-нибудь помочь мне?

ответ

2

Аргумент шаблона должен быть полным и полным. И шаблонный класс, такой как std::bitset, не является полным типом без его размера. Так что вам нужно сделать, например.

std::queue<bitset<8>> buttonQueue; 

Другими словами, вам также необходимо предоставить размер битов.

+0

Не нужно что-то вроде std :: queue [14]> buttonQueue; поскольку каждое сообщение представляет собой массив из 14 битов каждого размера 8? –

+0

@KevinPaton Обработка простых массивов может быть проблематичной с помощью шаблонов и вообще обходить. Вместо этого я предлагаю вам использовать ['std :: array'] (http://en.cppreference.com/w/cpp/container/array), тогда вы можете сделать это, например. 'std :: queue , 14 >>', очередь будет содержать простые простые объекты, которые по сути являются массивами битов. –

Смежные вопросы