Наследование базового класса с помощью рекурсивного шаблона
Как наследовать базовый класс в рекурсивном шаблонном классе? Мое требование что-то вроде этого
Base <--- Param<> <--- Param<int> <--- Param<char,int> <---- Param<double,char,int>
Я пытался наследовать базовый класс в class Param<> : public Base
В этом случае это работает для одного параметра шаблона, для ошибки создания нескольких параметров. Он не может наследовать базовых членов.
Если это наследуется в class Param <TFirst,TRest...>: public Param<TRest...>, public Base
Затем выкидывает ошибку неопределенности. Я думаю, что этого можно избежать с помощью виртуального ключевого слова. Но я ищу какой-то другой подход.
Пожалуйста, помогите мне с этим вопросом,
class Base{
public:
virtual void setData()=0;
protected:
std::string data;
};
template<class ...Args> // template class signature
class Param;
template<> //recursive template's base class
class Param<> : public Base{
public:
void setData(){
}
};
template<class TFirst, class... TRest>
class Param <TFirst,TRest...>: public Param<TRest...>
{
public:
void setData(){ // base class virtual function overriding
data = "test data"; //access base class data throwing error.
//do some other stuff
}
};