Maison > développement back-end > C++ > Pourquoi mon tableau statique « constexpr char » provoque-t-il une « référence non définie » ?

Pourquoi mon tableau statique « constexpr char » provoque-t-il une « référence non définie » ?

Patricia Arquette
Libérer: 2024-12-21 15:15:23
original
484 Les gens l'ont consulté

Why Does My Static `constexpr char` Array Cause an

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 :

  1. Dans votre fichier .cpp, ajoutez le ligne suivante après la déclaration de classe :

    constexpr char foo::baz[];
    Copier après la connexion

    Ceci déclare la définition du membre statique baz.

  2. 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";
    };
    Copier après la connexion

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal