Définition d'une fonction membre de modèle en dehors de la définition de classe
Dans la programmation de modèles, il peut être nécessaire de définir une fonction membre de modèle en dehors de la définition de classe tout en conservant l'accès aux deux paramètres du modèle.
Considérez l'extrait de code suivant :
<code class="cpp">template <class T> class Foo { public: template <class U> void bar(); };</code>
Pour implémenter la fonction bar en dehors de la définition de classe, nous pouvons utiliser la syntaxe suivante :
<code class="cpp">template<class T> template <class U> void Foo<T>::bar() { ... }</code>
Cette syntaxe indique au compilateur que la fonction bar est une fonction membre de la classe Foo avec un paramètre de modèle T. Dans la définition de bar, nous pouvons accéder à la fois à T et au paramètre de modèle supplémentaire U comme nécessaire.
Par exemple :
<code class="cpp">template<class T> template <class U> void Foo<T>::bar() { std::cout << "T: " << typeid(T).name() << ", U: " << typeid(U).name() << std::endl; }</code>
Ce code imprimera les noms des paramètres du modèle T et U lorsque la fonction bar est appelée.
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!