Maison > développement back-end > C++ > Pourquoi est-ce que j'obtiens une « référence non définie au constructeur de classe de modèle » et comment puis-je y remédier ?

Pourquoi est-ce que j'obtiens une « référence non définie au constructeur de classe de modèle » et comment puis-je y remédier ?

DDD
Libérer: 2024-12-09 19:57:15
original
489 Les gens l'ont consulté

Why Do I Get

Pourquoi « Référence non définie au constructeur de classe de modèle » ?

Une classe de modèle définit un modèle pour créer des classes avec différents types. Pour utiliser une classe modèle, vous devez l'instancier avec un type spécifique. Dans votre cas, vous disposez de deux classes modèles : nodo_colaypila et cola.

Cependant, le compilateur doit connaître les constructeurs des classes instanciées avant de compiler le code. Puisque vous n'instanciez pas explicitement les classes de modèles avec des types spécifiques, le compilateur ne sait pas quels constructeurs inclure.

Deux solutions :

Il existe deux façons de résoudre ce problème :

Solution 1 : modèle explicite Instanciation

Ajouter des instanciations de modèles explicites à la fin de cola.cpp :

template class cola<float>;
template class cola<string>;
Copier après la connexion

Assurez-vous que toutes les définitions de modèles sont dans une seule unité de traduction (fichier .cpp) et que les instanciations explicites sont à la fin du fichier.

Solution 2 : déplacer le code vers l'en-tête Fichiers

Déplacez le code implémentant les fonctions membres de cola.cpp et nodo_colaypila.cpp vers les fichiers d'en-tête correspondants .h. Cela rend les implémentations de fonctions disponibles pour toutes les unités de traduction qui incluent ces en-têtes.

Résumé :

L'approche d'instanciation de modèle explicite vous permet de contrôler l'instanciation de types spécifiques. . L'approche « déplacer le code vers les fichiers d'en-tête » est couramment utilisée et rend l'implémentation disponible pour toutes les unités de traduction. Le choix dépend de vos besoins spécifiques et des exigences du projet.

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