Forçar o método de modelo na classe não modelo
Eu tento alcançar o seguinte comportamento / sintaxe / uso desta classe:
Data1 dataType1;
Data2 dataType2;
int intType;
float floatType;
dataType1.method( intType );
dataType1.method( floatType );
dataType2.method( intType );
dataType2.method( floatType );
Minha abordagem, seria esta:
struct CDataBase
{
template< typename T > virtual void method( T type ) = 0;
};
struct CData1 : CDataBase
{
template< typename T > void method( T type ) {}
};
struct CData2 : CDataBase
{
template< typename T > void method( T type ) {}
};
No entanto, métodos de modelo virtual não são possíveis. Também não há necessidade de uma classe base real. No entanto, tenho que garantir que algumas classes tenham um (modelo) 'método ()' implementado.
Como forçar uma classe / estrutura sem modelo para substituir um método de modelo?
EDIT: Este é o meu layout real:
struct Data0
{
int someVar;
template< class T >
void decode( T& type )
{
type.set( someVar );
}
};
EDIT: na versão atual do C ++ (11), o comportamento que eu tento alcançar não é possível. Além disso, eu realmente deveria recodificar esta parte para evitar esse problema. No entanto, aceito a única resposta dada, obrigado pelo seu interesse.