Maison > développement back-end > C++ > Pourquoi est-ce que j'obtiens des erreurs « Symbole externe non résolu » avec les modèles C ?

Pourquoi est-ce que j'obtiens des erreurs « Symbole externe non résolu » avec les modèles C ?

Barbara Streisand
Libérer: 2025-01-03 22:07:41
original
381 Les gens l'ont consulté

Why Do I Get

Comprendre les erreurs de « symbole externe non résolu » dans les modèles

Lors de l'utilisation de modèles en C où le code est divisé entre les fichiers d'en-tête (H) et source (CPP), vous pouvez rencontrer des erreurs de « symbole externe non résolu » lors de la liaison. Cela est dû au fait que les modèles sont instanciés uniquement au moment de leur utilisation. Lorsqu'il est utilisé, le compilateur nécessite la définition complète de la fonction pour générer le code correct.

Dans ce scénario, le code de la fonction se trouve dans le fichier source du modèle, qui n'est pas accessible lors de la compilation des sources du programme. Le compilateur suppose que la fonction est définie ailleurs et insère uniquement l'appel de fonction. Cependant, le fichier source du modèle n'inclut pas le type de modèle spécifique utilisé dans la source du programme, ce qui entraîne des symboles externes non résolus.

Pour résoudre ce problème, envisagez les options suivantes :

  1. Fonctions du modèle en ligne : définissez toutes les fonctions membres du modèle comme étant en ligne dans le fichier source. Cela oblige le compilateur à inclure le code de fonction même lorsque le type de modèle spécifique n'est pas utilisé.
  2. Classe de modèle en-tête uniquement : incluez la définition complète des fonctions membres du modèle dans le fichier d'en-tête, éliminant le besoin d'un fichier source séparé et rendant le code disponible au compilateur lors de la compilation des sources du programme.

En fournissant au compilateur un accès au code complet de la fonction du modèle pendant compilation des sources du programme, ces solutions résolvent efficacement les erreurs de « symbole externe non résolu ».

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