Maison  >  Article  >  développement back-end  >  Comment définir une fonction membre de modèle en dehors de la définition de classe ?

Comment définir une fonction membre de modèle en dehors de la définition de classe ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-04 01:01:30612parcourir

How to Define a Template Member Function Outside of the Class Definition?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn