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

Posted

技术标签:

【中文标题】C++ 模板继承。子类应该用固定类型替换基类中的类型【英文标题】:C++ Template Inheritance. Subclass should replace a type in a base class with a fixed type 【发布时间】:2019-06-27 11:02:37 【问题描述】:

如何使用模板基类,使子类“修复”模板类型。

例如我有一个模板基类:

template <class A, int size> class BaseClass
    private:
        A *elem;
    public:
        A()
        
            elem = new A[size];
        
;

我可以的

BaseClass<int, 5> mybase;

现在我想创建一个子类,它只有参数size,类型应该是int,即子类应该用固定类型替换基类中的类型A(例如int

类似这样的:

SubClass<5> mysubclass; 
// type should be fixed to int, e.g. mysubclass can do the same like mybase 

问候

【问题讨论】:

有什么东西阻止你这样做吗? 【参考方案1】:

怎么样

template <int size>
using SubClass = BaseClass<int,size>;

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

template <int size>
class SubClass: public BaseClass<int,size> 
   ...
;

【讨论】:

【参考方案2】:

您可以将派生类定义为

template <int size> 
class SubClass : public BaseClass<int, size> 
    ...
;

那么对于SubClass&lt;5&gt;,基类特化将是BaseClass&lt;int, 5&gt;

【讨论】:

以上是关于C++ 模板继承。子类应该用固定类型替换基类中的类型的主要内容,如果未能解决你的问题,请参考以下文章

c++ 泛型 模板继承问题

急急急!!!!C# 中关于子类访问基类成员的可访问性

在模板基类中为继承类中的可选覆盖生成虚拟方法

子类继承基类的三种继承方式

C++的三大特性之一继承

C++ | 类继承