Принудительный метод шаблона в не шаблонном классе
Я пытаюсь добиться следующего поведения / синтаксиса / использования этого класса:
Data1 dataType1;
Data2 dataType2;
int intType;
float floatType;
dataType1.method( intType );
dataType1.method( floatType );
dataType2.method( intType );
dataType2.method( floatType );
Мой подход был бы такой:
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 ) {}
};
Однако методы виртуальных шаблонов невозможны. Также нет необходимости в реальном базовом классе, однако я должен убедиться, что в некоторых классах реализован (template) 'method ()'.
Как заставить не шаблонный класс / структуру переопределить метод шаблона?
РЕДАКТИРОВАТЬ: Это мой фактический макет:
struct Data0
{
int someVar;
template< class T >
void decode( T& type )
{
type.set( someVar );
}
};
РЕДАКТИРОВАТЬ: в текущей версии C ++ (11) поведение, которое я пытаюсь достичь, невозможно. В дополнение к этому я должен действительно перекодировать эту часть, чтобы избежать этой проблемы. Тем не менее, я принимаю единственный ответ, спасибо за вашу поддержку.