Что такое правильная инициализация массива указателей для членов класса c ++ 17? - PullRequest
1 голос
/ 08 марта 2020

Я использую VS 2019 с расширением VisualGDB для устройства STM32F303V C. У меня есть класс TlteCom с массивом указателей на членов класса C ++ 17. Вот оно:

class TlteCom
 {
  public:
   volatile uint16_t number=0;
   volatile uint16_t paramNumber=0;
   volatile char param1[20];
   volatile char param2[20];
   volatile char param3[8];

   constexpr static uint8_t paramCount = 3;
   volatile char *const paramlist[paramCount] = {(volatile char *)param1, (volatile char *)param2, 
                                                 (volatile char*)param3};
   volatile uint16_t paramlength[paramCount] = { 0, 0, 0 };
 };

Я создаю объект класса как глобальную переменную следующим образом: TlteCom com;

Я не понимаю, почему com.paramlist члены все равны нулю. если я создаю объект класса TlteCom в стеке в функции main(), то все в порядке: com.paramlist имеет правильные значения адресов param1, param2, param3. Итак, какова правильная инициализация массива pramlist?

...