Maison > développement back-end > C++ > Pourquoi est-ce que j'obtiens une erreur « Référence non définie à Static constexpr char[] » en C ?

Pourquoi est-ce que j'obtiens une erreur « Référence non définie à Static constexpr char[] » en C ?

DDD
Libérer: 2024-12-17 03:42:25
original
176 Les gens l'ont consulté

Why Do I Get an

Erreur inattendue : "Référence non définie à un char constexpr statique[]" dans la définition de classe

Rencontre d'une "Référence non définie à un char constexpr statique[] ]" lors de la définition d'un tableau de caractères const statique au sein d'une classe peut être déroutante. Examinons le problème et explorons la solution.

Comme souligné dans le message d'erreur, le compilateur attend une définition pour le membre statique. Dans l'extrait de code fourni, vous avez inclus la déclaration et l'initialiseur dans la définition de classe, mais vous n'avez pas fourni la définition distincte dans le fichier .cpp.

Pour résoudre ce problème, suivez ces étapes :

  1. Fournissez la définition :

Dans le fichier .cpp, ajoutez le définition en déclarant le membre statique sans l'initialiseur, comme indiqué ci-dessous :

constexpr char foo::baz[];
Copier après la connexion
  1. Conserver la déclaration et l'initialiseur intacts :

Maintenir la déclaration de classe et initialiseur pour le membre statique dans le fichier .hpp tel qu'il is.

Explication :

En C , les membres statiques se voient allouer de la mémoire lors de la compilation et sont partagés entre toutes les instances de la classe. Lors de la définition d'un tableau de caractères const statique, la déclaration et l'initialiseur doivent être inclus dans le fichier d'en-tête (.hpp). Cependant, la définition (sans l'initialiseur) doit être fournie séparément dans le fichier d'implémentation (.cpp) pour résoudre le problème de liaison. Cela garantit que la définition du membre statique est accessible lors de la liaison, résolvant ainsi l'erreur « Référence non définie ».

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal