Статическая / глобальная переменная не разрешена в C++
Я определил глобальную переменную в своем классе C++ следующим образом:
std::string VAR = "HELLO_WORLD";
Но cpplint говорит мне:
Статические / глобальные строковые переменные не допускаются. [время выполнения / строка] [4]
У тебя есть идея почему?
1 ответ
Решение
Во избежание сомнений, сам язык это допускает.
По сути, статический анализатор, который вы используете, запрещает это, потому что std::string
содержит конструктор, поэтому оператор фактически "что-то делает".
Поэтому он должен быть внутри функции, а не в глобальном масштабе.
С другой стороны,
const char* VAR = "HELLO_WORLD";
испускается, так как это не более чем назначение только для чтения const char[]
литерал к соответствующему указателю.