Référence non définie au constructeur de classe de modèle
Dans ce code C, le compilateur génère l'erreur "référence non définie à cola(float) : cola()". Cette erreur se produit car le compilateur ne trouve pas l'implémentation du constructeur pour la classe de modèle cola.
Réponse 1 : Instanciation explicite du modèle
Une solution consiste à instancier explicitement le classe de modèle cola à la fin de cola.cpp, le forçant à compiler le béton instanciations.
template class cola<float>; template class cola<string>;
Réponse 2 : inclusion du fichier d'en-tête
Alternativement, l'implémentation de la classe de modèle peut être déplacée vers le fichier d'en-tête cola.h. Cela garantit que l'implémentation est disponible pour toutes les unités de traduction qui incluent le fichier d'en-tête.
Raison de l'inclusion du fichier d'en-tête
Placer l'implémentation dans le fichier d'en-tête évite d'avoir à pour une instanciation explicite. Il garantit que la classe de modèle et ses fonctions membres sont disponibles pour chaque unité de traduction incluant le fichier d'en-tête. Cette approche est couramment utilisée pour les classes de modèles qui sont largement utilisées dans la base de code.
Remarques supplémentaires :
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!