Définir un membre de données statique de type const std::string
En C, définir une constante statique privée pour une classe peut être difficile lors de l'utilisation du type standard const std::string. Les messages d'erreur rencontrés indiquent que la méthode utilisée n'est pas conforme à la norme ISO C.
Pour définir une constante littérale privée sans utiliser de directive #define, considérez les deux approches suivantes :
Variables en ligne (C 17 et versions ultérieures)
Depuis C 17, les variables en ligne peuvent être utilisées pour déclarer des données membres statiques avec une constante initialiseurs. Cela se fait en ajoutant le mot-clé inline avant la déclaration statique dans la définition de classe :
class A { private: inline static const std::string RECTANGLE = "rectangle"; };
Définition en dehors de la définition de classe (avant C 17)
Avant C 17, les membres statiques doivent être définis en dehors de la définition de classe et initialisés séparément. La déclaration statique dans la définition de classe est effectuée sans initialiseur :
class A { private: static const std::string RECTANGLE; }; // In an implementation file const std::string A::RECTANGLE = "rectangle";
Notez que la syntaxe d'initialisation directe des membres statiques avec des types non intégraux dans les définitions de classe n'est autorisée qu'avec les types intégraux et enum.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!