"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo definir miembros estáticos const std::string en C++?

¿Cómo definir miembros estáticos const std::string en C++?

Publicado el 2024-12-21
Navegar:410

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

Definición de miembros de datos estáticos de tipo const std::string

En C, definición de un miembro constante estático privado de tipo std::string dentro de una clase usando la inicialización en clase, como se muestra a continuación, no cumple con el estándar C:

class A {
   private:
      static const string RECTANGLE = "rectangle";
}

Sin embargo, C proporciona enfoques alternativos para lograr esta funcionalidad.

C 17 Variables en línea

Desde C 17, puede usar variables en línea para este propósito. Una variable en línea es una característica de C 17 que permite la declaración de una variable estática directamente dentro de la definición de clase, con la palabra clave en línea. Por ejemplo:

// In a header file (if necessary)
class A {
private:
  inline static const string RECTANGLE = "rectangle";
};

Enfoque anterior a C 17

Antes de C 17, debe definir el miembro estático fuera de la definición de clase y proporcionar el inicializador allí. Aquí hay un ejemplo:

// In a header file (if necessary)
class A {
private:
  static const string RECTANGLE;
};
// In one of the implementation files
const string A::RECTANGLE = "rectangle";

Nota: La sintaxis de inicialización que intentó (dentro de la definición de clase) solo se admite para tipos integrales y enumerativos.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3