J'ai essayé de google, mais je reviens toujours avec des problèmes différents. Je reçois 3 externes non résolus lorsque j'essaie de compiler ce programme: dyninttack.h strong> p> dynintStact.cpp strong> p> main.cpp strong> p>
3 Réponses :
Vous devez mettre toutes les implémentations de modèle que vous avez dans votre fichier .CPP dans le fichier d'en-tête ou dans un fichier inclus par l'en-tête. Et n'essayez pas de compiler le fichier de mise en œuvre. Certains systèmes tentent de compiler des fichiers avec un suffixe .CPP. Le compilateur doit voir le code afin d'instancier les modèles. P>
Si j'avais une livre pour chaque fois que je vois cette question
@Edchum ou un uppote :-)
@juanchopanza Yep, 'Tis me dire que cela vous a susceptible de vous élever, il semble que nous obtenons ces erreurs de liaison de modèles tous les 2-3 jours
Très frustrant! C'est seulement sur les modèles?
@Chad oui. Pensez aux modèles comme code partiel nécessitant des arguments de modèles spécifiques au moment de la compilation afin d'être instanciés. Le compilateur rend fondamentalement du code du modèle. Cela doit arriver avant la compilation. J'espère que cela a eu un sens ...
au bas de DynIntstack.h, mettez
#include <DynIntStack.cpp>
La solution la plus simple au problème est la suivante: p>
Où que vous souhaitiez inclure votre classe de modèle, par exemple. "DynIntstack.h" plutôt faire "DynIntstack.cpp". par exemple. dans votre principal.cpp ci-dessus. p>
simple comme ça, pas besoin de changer d'autre chose. p>
Pourquoi cette réponse a-t-elle voté depuis que la solution fonctionne réellement?
D'autres réponses disent la même chose et 2 ans plus tôt.