2011-10-08 17 views
5

Las funciones de miembro de clase pueden ser funciones de plantilla, o deben ser funciones de clase estáticas. Básicamente, ¿la clase y la función pueden ser instanciadas técnicamente por separado a pedido?Métodos de plantilla y clases de plantilla C++

¿Cuáles son las limitaciones de usar una función de plantilla como miembro de una clase de plantilla? ¿Se pueden hacer ambos al mismo tiempo o es o bien o bien?

Respuesta

9

Usted puede tener funciones miembro de plantilla de clases de plantilla, como esta:

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

Los métodos de clase pueden ser plantillas. La única limitación es que no pueden ser virtuales.

EDIT:

Para ser más completa, constructor también puede ser plantilla

class X 
{ 

    template<typename T> 
    X(T t) 
    { 

    } 

}; 

Pero, por supuesto, sólo debe haber una plantilla no destructor

+0

Hiciste un muy buen comentario sobre no ser virtual :-) +1 – rubixibuc

Cuestiones relacionadas