Объявление константного динамического массива

Объявление массива как указателя отлично работает

class Test {
  char * const chars;
  Test(int cnt) : chars(new char[cnt]) {}
}

вопрос а можно ли как-то такой массив не как указатель, а как массив [].

Вот так

class Test {
  const char chars[];
  Test(int cnt) : chars(new char[cnt]) {}
}

получаю ошибку

error: flexible array member 'Test::chars' not at end of 'class QueryValues' const char chars[];

Мне нужно чтобы повторное присвоение chars = ... вызывало ошибку, но при этом можно было изменять элементы массива


Ответы (1 шт):

Автор решения: user7860670

чтобы сразу видеть, что это будет массив, делайте так (и еще и ресурсы подчистяцаа):

#include <memory>

class Test {
  ::std::unique_ptr<char[]> const chars;
  Test(int cnt) : chars{new char[cnt]{}} {}
};
→ Ссылка