«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как определить статические константные члены std::string в C++?

Как определить статические константные члены std::string в C++?

Опубликовано 21 декабря 2024 г.
Просматривать:298

How to Define Static const std::string Members in C  ?

Определение статических элементов данных типа 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