


Pourquoi est-ce que j'obtiens l'erreur « Symbole externe non résolu » lors de la définition d'un champ statique en C ?
Nov 01, 2024 am 01:35 AMSymbole externe non résolu pour le champ d'objet statique
Cet article examine le message d'erreur « Erreur LNK2001 : symbole externe non résolu » rencontré lors de la tentative de définition un champ statique dans une classe à partir de la méthode principale.
Dans l'extrait de code fourni, la déclaration du champ statique "a" dans la classe "B" se produit dans la définition de classe elle-même. Cependant, selon la norme C, ces déclarations ne sont pas considérées comme des définitions. Pour les données membres statiques, la définition appropriée doit apparaître en dehors de la classe dans la portée de l'espace de noms englobant, à l'aide de l'opérateur "::".
La règle qui régit cette exigence est connue sous le nom de règle de définition unique (ODR). qui exige que chaque entité (y compris les membres de données statiques) ait une seule définition unique dans l'ensemble du programme. Cette règle garantit qu'il n'y a pas d'ambiguïté concernant la valeur du membre statique.
Par conséquent, pour résoudre l'erreur, le code doit être modifié comme suit, où "a" est défini dans la portée de l'espace de noms :
<code class="cpp">class A { public: A() { } }; class B { public: static A* a; }; A* B::a; // Definition in namespace scope int main() { B::a = new A; }</code>
En définissant explicitement le membre statique en dehors de la classe, l'éditeur de liens peut résoudre correctement la référence du symbole et le code sera compilé avec succès.
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!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Quels sont les types de valeurs renvoyées par les fonctions du langage C? Qu'est-ce qui détermine la valeur de retour?

Gulc: Cibliothèque C construite à partir de zéro

C Fonction Langue Format de lettre ÉTAPES DE CONVERSION DE CAS

Quelles sont les définitions et les règles d'appel des fonctions du langage C et quelles sont les

Utilisation distincte et partage de phrases

Où est la valeur de retour de la fonction de langue C stockée en mémoire?

Comment fonctionne la bibliothèque de modèle standard C (STL)?

Comment utiliser efficacement les algorithmes du STL (trier, trouver, transformer, etc.)?
