Référence non définie au tableau de caractères constexpr statique : comprendre le problème de référence non définie
Dans le langage de programmation C, il est possible de définir une constante statique tableaux de caractères au sein d’une classe. Cependant, les développeurs peuvent rencontrer une erreur « référence non définie » lorsqu'ils tentent de référencer de tels tableaux dans leur code. Cette erreur se produit car le compilateur nécessite à la fois une déclaration et une définition du membre statique.
Pour résoudre ce problème, le code doit être modifié comme suit. Dans la définition de la classe (fichier .hpp), la déclaration et l'initialisation du tableau statique doivent rester à l'intérieur de la classe. Dans le fichier d'implémentation (fichier .cpp), une ligne distincte doit être ajoutée pour fournir la définition du tableau statique.
// .hpp struct foo { void bar(); static constexpr char baz[] = "quz"; }; // .cpp void foo::bar() { std::string str(baz); // now compiles successfully } constexpr char foo::baz[]; // definition of static member
En fournissant la définition du membre statique séparément, le compilateur peut lier la référence au tableau correctement, résolvant l'erreur de référence non définie. Cette séparation entre déclaration et définition est nécessaire car la taille du tableau doit être connue lors de la compilation, tandis que son initialisation peut être différée à plus tard.
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!