Maison >développement back-end >C++ >Pourquoi est-ce que j'obtiens des erreurs « Référence non définie à » pour les constructeurs de classes de modèles et comment puis-je les corriger ?
L'erreur du compilateur "référence non définie à..." pour les constructeurs de classe de modèle signifie un manque d'instanciation explicite instructions pour les classes de modèles spécifiques utilisées dans le programme. Ce problème se produit car le compilateur ne compile pas automatiquement le code du modèle jusqu'à ce qu'il soit explicitement requis.
Ajouter les instructions d'instanciation explicites du modèle à la fin du fichier d'implémentation (cola .cpp dans ce cas) :
template class cola<float>; template class cola<string>;
De plus, incluez les lignes suivantes dans nodo_colaypila.cpp :
template class nodo_colaypila<float>; template class nodo_colaypila<std::string>;
Cela force le compilateur à compiler les classes de modèles requises.
Déplacer le code d'implémentation de cola .cpp et nodo_colaypila.cpp dans cola.h et nodo_colaypila.h, respectivement. Cela garantit la disponibilité des définitions de fonctions dans toutes les unités de traduction utilisant les classes de modèles.
Solution 1 :
Solution 2 :
nodo_colaypila<T><T>* ult, pri;
devrait être :
nodo_colaypila<T>* ult, *pri;
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!