C ++模板继承。子类应使用固定类型替换基类中的类型

kno*_*dge 1 c++ inheritance templates

如何以子类使模板类型为“修复”的方式使用模板基类。

例如,我有一个模板基类:

template <class A, int size> class BaseClass{
    private:
        A *elem;
    public:
        A()
        {
            elem = new A[size];
        }
};
Run Code Online (Sandbox Code Playgroud)

我可以

BaseClass<int, 5> mybase;
Run Code Online (Sandbox Code Playgroud)

现在,我想制作一个仅具有参数size且类型应该为int的子类,即该子类应将A基类中的类型替换为固定类型(例如int

像这样:

SubClass<5> mysubclass; 
// type should be fixed to int, e.g. mysubclass can do the same like mybase 
Run Code Online (Sandbox Code Playgroud)

问候

And*_* H. 5

怎么样

template <int size>
using SubClass = BaseClass<int,size>;
Run Code Online (Sandbox Code Playgroud)

它不是子类,但据我了解,它可以满足您的需求。真正的子类将是

template <int size>
class SubClass: public BaseClass<int,size> {
   ...
};
Run Code Online (Sandbox Code Playgroud)