Comment transférer une classe de modèle C ++?

Étant donné une classe de modèle comme celle-ci:

template class Mappings { public: ... Type valueFor(const IDType& id) { // return value } ... }; 

Comment quelqu’un peut-il déclarer cette classe dans un fichier d’en-tête?

Voici comment vous le feriez:

 template class Mappings; template class Mappings { public: ... Type valueFor(const IDType& id) { // return value } ... }; 

Notez que la valeur par défaut est dans la déclaration forward et non dans la définition réelle.

Vous pouvez déclarer des arguments par défaut pour un modèle uniquement pour la première déclaration du modèle. Si vous souhaitez autoriser les utilisateurs à transmettre la déclaration d’un modèle de classe, vous devez fournir un en-tête de transfert. Si vous souhaitez transférer le modèle de classe de quelqu’un d’autre en utilisant les valeurs par défaut, vous n’avez pas de chance!