Pregunta Métodos de plantillas y clases de plantillas C ++


¿Pueden las funciones miembro de la clase 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?

¿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?


5
2017-10-08 05:57


origen


Respuestas:


Puede tener funciones de 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) {
    // ...
}

9
2017-10-08 06:07



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

EDITAR:

Para ser más completos, el constructor también puede ser plantilla.

class X
{

    template<typename T>
    X( T t )
    {

    }

};

Pero, por supuesto, solo debería haber un destructor que no sea una plantilla


6
2017-10-08 06:03



Preguntas populares