使用递归模板类继承基类

时间:2018-01-17 15:26:07

标签: c++ c++11 templates inheritance variadic-templates

如何在递归模板类中继承Base类? 我的要求是这样的

Base <--- Param<> <--- Param<int> <---  Param<char,int> <---- Param<double,char,int>

我尝试在class Param<> : public Base 中继承Base类。在这种情况下,它适用于单个模板参数,用于多参数抛出错误。它无法继承基本成员。

如果它在class Param <TFirst,TRest...>: public Param<TRest...>, public Base中继承,则抛出歧义错误。我认为使用virtual关键字可以避免这种情况。但我正在寻找另一种方法。

请帮我解决这个问题,

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 个答案:

没有答案