如何在递归模板类中继承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
}
};