Наследование базового класса с помощью рекурсивного шаблона

Как наследовать базовый класс в рекурсивном шаблонном классе? Мое требование что-то вроде этого

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
    }
};

0 ответов

Другие вопросы по тегам