Je sais qu'il est possible de créer une fonction de modèle:
template<typename T>
void DoSomeThing(T x){}
et il est possible de créer une classe de modèle:
template<typename T>
class Object
{
public:
int x;
};
mais est-il possible de créer une classe hors d'un modèle, puis de faire d'une fonction de cette classe un modèle? C'est à dire:
//I have no idea if this is right, this is just how I think it would look
class Object
{
public:
template<class T>
void DoX(){}
};
ou quelque chose dans la mesure où la classe ne fait pas partie d'un modèle, mais la fonction est?
Voir ici: Modèles , méthodes de modèle , modèles de membre, modèles de fonction de membre
la source
Oui, les fonctions des membres du modèle sont parfaitement légales et utiles à de nombreuses reprises.
La seule mise en garde est que les fonctions membres du modèle ne peuvent pas être virtuelles.
la source
Le moyen le plus simple consiste à placer la déclaration et la définition dans le même fichier, mais cela peut entraîner un fichier excutable surdimensionné. Par exemple
De plus, il est possible de mettre la définition du modèle dans des fichiers séparés, c'est-à-dire de les placer dans des fichiers .cpp et .h. Tout ce que vous avez à faire est d'inclure explicitement l'instanciation du modèle dans les fichiers .cpp. Par exemple
la source