Hola amigos..
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)
//Clase.h
template <class TM>
class Clase{
TM num1, num2;
public:
Clase(TM n1, TM n2);
TM ObtenerMultiplicacion() const;
};
//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:
//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.