2010-11-15 5 views
3

pouvons-nous déclarer une fonction template dans une classe normale sans une classe de modèle ou doit-elle toujours être dans un template class?Modèles en C++

+0

Je pense que vous vouliez dire "class template". Un modèle de classe comme 'template struct Foo {};' est une sorte de modèle, mais pas une sorte de classe. De même, un "modèle de fonction" est un autre type de modèle, et non une fonction. – MSalters

+0

Cela doit être une dupe –

Répondre

2

peut-on déclarer une fonction de modèle dans une classe normale avec une classe de modèle

Oui nous pouvons. Par exemple

class demo 
{ 
    public: 
    template <typename T> 
    void func(const T& x) { 
     //do stuffs 
    } 
}; 

int main() 
{ 
    demo d; 
    d.func<int>(5); 
} 

est parfaitement valable

2

Oui, vous pouvez avoir des fonctions de modèle dans les classes non-basé sur un modèle aussi, par exemple:

struct X { 
    template<class T> 
    void f(const T& t) { 
     // ... 
    } 
}; 
0

Oui, vous pouvez, mais assurez-vous que votre définition et la déclaration de la fonction de modèle est dans les fichiers d'en-tête. Si vous voulez en savoir plus, pourquoi est-ce comme ça ou plus sur les gabarits en général, je peux vous recommander ce livre Templates - Complete Guide