На обучающем веб-сайте C ++ (https://www.learncpp.com/cpp-tutorial/6-9a-dynamically-allocating-arrays/) утверждается, что в G CC имеется ошибка, связанная с инициализацией строки в стиле C, когда задействован новый оператор:
На момент написания, в G CC все еще была ошибка, при которой инициализация динамически размещаемого массива символов с использованием строкового литерала в стиле C вызывает ошибку компилятора:
char *array = new char[14] { "Hello, world!" }; // doesn't work in GCC, though it should
Я использую G CC версию 7.4.0.
Если я пытаюсь скомпилировать этот отрывок, я получаю:
error: invalid conversion from ‘const char*’ to ‘char’ [-fpermissive]
char *array = new char[14] { "Hello, world!" };
Если я пытаюсь скомпилировать код следующим образом:
char *array = new char[14] {'H', 'e', 'l', 'l', 'o', 0}
тогда он работает как положено.
Я предполагаю, что это считается ошибкой, поскольку:
char array[14]{ "Hello, world!" };
работает как положено.
Я не мог найти больше информации об этом. Кто-нибудь может подтвердить или опровергнуть, что это ошибка G CC?