【问题标题】:C++ Template Inheritance. Subclass should replace a type in a base class with a fixed typeC++ 模板继承。子类应该用固定类型替换基类中的类型
【发布时间】: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 

问候

【问题讨论】:

  • 有什么东西阻止你这样做吗?

标签: c++ templates inheritance


【解决方案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;

    【讨论】:

      猜你喜欢
      • 2011-03-20
      • 1970-01-01
      • 1970-01-01
      • 2022-10-15
      • 1970-01-01
      • 1970-01-01
      • 2020-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多