Estoy estudiando templates y no comprendo este comportamiento:
A continuacion la forma en que NO funciona (con esta forma obtengo el error que sale en el titulo)
Código
//Clase.h template <class TM> class Clase{ TM num1, num2; public: Clase(TM n1, TM n2); TM ObtenerMultiplicacion() const; };
Código
//Clase.cpp #include "Clase.h" template <class TM> Clase<TM>::Clase(TM n1, TM n2){ this->num1 = n1; this->num2 = n2; } template <class TM> TM Clase<TM>::ObtenerMultiplicacion() const{ return this->num1 * this->num2; }
Sin embargo, con esta forma SI que funciona:
Código
//Clase.h template <class TM> class Clase{ TM num1, num2; public: Clase(TM n1, TM n2); TM ObtenerMultiplicacion() const; }; template <class TM> Clase<TM>::Clase(TM n1, TM n2){ this->num1 = n1; this->num2 = n2; } template <class TM> TM Clase<TM>::ObtenerMultiplicacion() const{ return this->num1 * this->num2; }
Como verán, declarar la clase y definir sus miembros dentro del mismo archivo me funciona, pero si lo separo, no va... y me parece extraño, porque en el archivo Clase.cpp estoy incluyendo la cabecera con #include "Clase.h"
Que ha sucedido??
gracias de antemano.