Maison >développement back-end >C++ >Pourquoi mon tableau statique « constexpr char » provoque-t-il une « référence non définie » ?
Référence non définie à Static constexpr char[]
Lorsque vous essayez de créer un tableau de caractères const statique en tant que membre d'une classe, vous pouvez rencontrer l'erreur "référence non définie à baz."
Explication :
GCC vous oblige à utiliser constexpr pour les tableaux const statiques. Cependant, placer la déclaration de tableau et l'initialiseur dans la définition de classe n'est pas suffisant. Vous devez également fournir une définition de membre distincte dans le fichier .cpp.
Pour résoudre ce problème :
Dans votre fichier .cpp, ajoutez le ligne suivante après la déclaration de classe :
constexpr char foo::baz[];
Ceci déclare la définition du membre statique baz.
Laissez la déclaration et l'initialisation du tableau dans la définition de la classe :
// .hpp struct foo { void bar(); static constexpr char baz[] = "quz"; };
Raison :
La définition de classe fournit la déclaration et l'initialiseur du membre statique. Toutefois, la définition du membre, qui alloue de la mémoire et initialise le tableau, doit être fournie séparément dans le fichier .cpp. En ajoutant cette définition, l'éditeur de liens pourra trouver le symbole baz et résoudre la 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!