Maison >développement back-end >C++ >Comment puis-je définir des membres de données de chaîne constante statique privée en C ?

Comment puis-je définir des membres de données de chaîne constante statique privée en C ?

DDD
DDDoriginal
2024-12-25 04:20:14309parcourir

How Can I Define Private Static Constant String Data Members in C  ?

Réaliser des membres de données de chaîne constante statique : un guide complet

Dans la poursuite de la définition de chaînes constantes statiques privées pour les classes, telles que les usines de formes, vous pouvez rencontrer un obstacle avec les compilateurs C. Cela est dû aux restrictions imposées par la norme C. Pour surmonter ce défi et établir un membre de données de chaîne const statique, envisagez les solutions suivantes :

Variables en ligne (C 17 et versions ultérieures)

L'utilisation de variables en ligne, introduites dans C 17, fournit une solution pratique et efficace pour définir des variables const statiques :

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

Définition et initialisation externes

Pré-C 17 versions nécessitent de définir le membre statique en dehors de la classe et de fournir l'initialiseur séparément :

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

Il est important de noter que la syntaxe avec un initialiseur à l'intérieur de la définition de classe est réservée uniquement aux types intégraux et enum. .

Un mot sur #define

Bien que #define puisse sembler tentant pour définir des constantes, il introduit un niveau de une visibilité mondiale qui n’est peut-être pas souhaitable. Par exemple, si la constante est définie dans un fichier d'en-tête, elle deviendra globalement accessible à toutes les parties du programme. Cela peut conduire à des conflits de noms avec différentes implémentations définissant la même constante, entre autres problèmes potentiels.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn