2011-10-08 2 views
5

Les fonctions membres de classe peuvent être des fonctions de modèle ou doivent-elles être des fonctions de classe statiques. Fondamentalement, la classe et la fonction peuvent-elles être instanciées techniquement séparément à la demande?Méthodes de modèle et classes de modèle C++

Quelles sont les limitations de l'utilisation d'une fonction modèle en tant que membre d'une classe modèle? Peut-on faire les deux en même temps, ou est-ce que ce soit?

Répondre

9

Vous pouvez avoir des fonctions de membres du modèle de classes de modèle, comme ceci:

template <typename T> 
class Foo { 
public: 
    template <typename U> 
    void bar(const T& t, const U& u); 
}; 

template <typename T> 
template <typename U> 
void Foo<T>::bar(const T& t, const U& u) { 
    // ... 
} 
6

Les méthodes de classe peuvent être des modèles. La seule limitation est qu'ils ne peuvent pas être virtuels.

EDIT:

Pour être plus complet, le constructeur peut aussi être modèle

class X 
{ 

    template<typename T> 
    X(T t) 
    { 

    } 

}; 

Mais bien sûr, il ne devrait y avoir un destructor non-modèle

+0

Vous avez fait un très bon point à propos de n'étant pas virtuel :-) +1 – rubixibuc

Questions connexes