C ++ Строковый литерал и константы - PullRequest
3 голосов
/ 15 января 2020

Прежде чем спросить, я прочитал предыдущий вопрос , но проблема немного в другом. Я использую это в моем классе:

static constexpr char* kSuffix = "tos";

Компиляция с g cc с c ++ 11 вызвала у меня эту ошибку:

error: ISO C++ forbids converting a string constant to 'char*' [-Werror=write-strings]

Но constexpr строже ограничение, чем const, поэтому constexpr должно const, но не наоборот. Поэтому мне интересно, почему g cc не распознает constexpr в этом случае?

1 Ответ

4 голосов
/ 15 января 2020

, поэтому constexpr должно const

Обратите внимание, что constexpr квалифицируется для kSuffix, поэтому указатель становится const (как char* const), но pointee не станет const (как const char*). G cc просто хочет сказать вам, что вы должны объявить kSuffix как указатель на const, то есть

static constexpr const char* kSuffix = "tos";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...