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>;
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!