Определение статических элементов данных типа const std::string
В C определение частного статического константного элемента типа std::string внутри класса с использованием инициализации внутри класса, как показано ниже, не соответствует стандарту C:
class A { private: static const string RECTANGLE = "rectangle"; }
Однако в C предусмотрены альтернативные подходы для достижения этой функциональности.
Встроенные переменные C 17
Начиная с C 17, вы можете использовать встроенные переменные для эта цель. Встроенная переменная — это функция C 17, которая позволяет объявлять статическую переменную непосредственно в определении класса с помощью ключевого слова inline. Например:
// In a header file (if necessary) class A { private: inline static const string RECTANGLE = "rectangle"; };
Подход до C 17
До C 17 вы должны определить статический член вне определения класса и предоставить там инициализатор. Вот пример:
// In a header file (if necessary) class A { private: static const string RECTANGLE; };
// In one of the implementation files const string A::RECTANGLE = "rectangle";
Примечание: Синтаксис инициализации, который вы пытались использовать (внутри определения класса), поддерживается только для целочисленных типов и типов перечислений.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3