реклама на сайте
подробности

 
 
> C++ -массив произвольного размера без new, как?
WHALE
сообщение Nov 1 2011, 13:14
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



Пытаюсь через шаблон:
Код
****************************************************************************/
           template <typename  T, const unsigned char buffer_size>
  class TBASE_UART: public TBASE_SERIAL_INTERFASE
  public:
              TBASE_UART (const unsigned char N_uart,  
                         const unsigned char tx_rx_yart,
                         const unsigned char mode_uart=0x86,  
                         const unsigned char baud_rate_uart=0x33 ):
                         TBASE_SERIAL_INTERFASE(buffer_size)  
.....
private:
   T data_read_buffer[buffer_size];

Пытаюсь инстанцировать
  TBASE_UART <unsigned char, 20> uart0  (0, 0X98);

Получаю Error[Pe028]: expression must have a constant value .
IAR AVR 6.3

Я не прав и так нельзя в принципе или это как-то лечится?


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
neiver
сообщение Nov 1 2011, 14:25
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 22-03-10
Из: Саратов
Пользователь №: 56 123



С шаблоном и массивом всё вроде впорядке (может только const в "const unsigned char buffer_size" лишний). Должно работать. Может проблема чем-то в другом.
Go to the top of the page
 
+Quote Post
WHALE
сообщение Nov 1 2011, 15:31
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



Цитата(neiver @ Nov 1 2011, 18:25) *
С шаблоном и массивом всё вроде в порядке (может только const в "const unsigned char buffer_size" лишний). Должно работать. Может проблема чем-то в другом.

const это я уже с горя. Спасибо за сообщение,что так действовать можно.
Буду думать дальше...


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 1 2011, 20:14
Сообщение #4


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Нужно только учесть, что с таким путём (шаблонами) размер массива задаётся на этапе компиляции. То есть, это практически то же, что и
Код
#define BUFFER_SIZE 32
char buffer[BUFFER_SIZE];


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
WHALE
сообщение Nov 2 2011, 03:58
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



Цитата(AHTOXA @ Nov 2 2011, 00:14) *
Нужно только учесть, что с таким путём (шаблонами) размер массива задаётся на этапе компиляции. То есть, это практически то же, что и
Код
#define BUFFER_SIZE 32
char buffer[BUFFER_SIZE];

Ну дык так и задумывалось.Иначе new,которое на AVR совсем не кошерно будет.


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 19:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01398 секунд с 7
ELECTRONIX ©2004-2016