Maison > développement back-end > C++ > le corps du texte

Pourquoi un « Symbole externe non résolu » se produit-il lors de la définition de champs statiques en C ?

DDD
Libérer: 2024-10-31 13:45:02
original
779 Les gens l'ont consulté

Why Does

Symbole externe non résolu : compréhension des déclarations de champs statiques

Lorsque vous essayez de définir un champ statique dans une classe sur une valeur différente à partir de la classe principale méthode, vous pouvez rencontrer l'erreur « symbole externe non résolu » (erreur LNK2001 : symbole externe non résolu). Cela se produit généralement si le champ statique n'est pas correctement initialisé en dehors de la définition de classe.

Selon la référence C, une déclaration d'un membre de données statique à l'intérieur d'une définition de classe est considérée comme une déclaration et non une définition. Pour définir le champ statique, il doit être déclaré en dehors de la définition de classe, dans une portée d'espace de noms entourant la définition de classe.

Par exemple, considérons le code suivant :

<code class="cpp">class A
{
public:
    A()
    {

    }
};

class B
{
public:
    static A* a;  // Declaration only
};

int main()
{
    B::a = new A;  // Error
}</code>
Copier après la connexion

Dans ce cas , le champ statique B::a est déclaré dans la définition de classe, mais n'est pas défini. Pour résoudre cette erreur, vous devez déplacer la définition du champ statique en dehors de la définition de la classe, comme indiqué ci-dessous :

<code class="cpp">class A
{
public:
    A()
    {

    }
};

class B
{
public:
};

// Static field definition outside the class
A* B::a = nullptr;

int main()
{
    B::a = new A;  // No error
}</code>
Copier après la connexion

Cette modification garantit que le champ statique est correctement défini et peut être utilisé dans la méthode principale. . En suivant la règle d'une définition, vous pouvez éviter les erreurs de « symbole externe non résolu » et vous assurer que vos champs statiques sont correctement lié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!

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!