«Erreur LNK2019: symbole externe non résolu» lors de l’utilisation de modèles

Dupliquer possible:
Pourquoi ai-je des erreurs de «symbole externe non résolu» lors de l’utilisation de modèles?

J’utilise des modèles dans mon code alors qu’il y a toujours une erreur LNK2019. Voici une partie de mon code:

Méthode.h

template void Method(Model* sys); 

Method.cpp

 template void Method(Model* sys){ blablabla;} 

Model.h

 template class Model{ blablabla;} class Model1:public Model{ blablabla;} 

Main.cpp

 Model *sys=new Model1(); Method(sys); 

Cependant, une erreur LNK2019 apparaît toujours: symbole externe non résolu “void __cdec1, méthode (classe Model *)” référencé dans function_main. Quelqu’un sait où je vais mal? Merci beaucoup!

Les modèles doivent être implémentés dans l’en-tête.

Méthode.h

 template void Method(Model* sys){ /*Your code here*/ }; 

Voir aussi: https://stackoverflow.com/a/495056/868546

De Mark Ransom :

Dans le fichier .cpp, le compilateur ne peut pas deviner quel sera le paramètre de modèle lorsque vous utiliserez la fonction dans d’autres fichiers. Par conséquent, il ne génère aucun code. L’éditeur de liens remarque l’absence de code et se plaint.

La méthode habituelle consiste à définir le corps entier de la fonction dans l’en-tête, de la même manière qu’une fonction inline, afin que le compilateur puisse émettre le code lorsqu’il voit la fonction utilisée avec le paramètre de modèle renseigné.

Dans le fichier .cpp, le compilateur ne peut pas deviner quel sera le paramètre de modèle lorsque vous utiliserez la fonction dans d’autres fichiers. Par conséquent, il ne génère aucun code. L’éditeur de liens remarque l’absence de code et se plaint.

La méthode habituelle consiste à définir le corps entier de la fonction dans l’en-tête, comme une fonction inline, afin que le compilateur puisse émettre le code lorsqu’il voit que la fonction est utilisée avec le paramètre template renseigné.

Les modèles doivent être implémentés dans un en-tête ou vous pouvez utiliser l’instanciation explicite d’une fonction / classe de modèle.