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<5>
,基类特化将是BaseClass<int, 5>
。
【讨论】:
以上是关于C++ 模板继承。子类应该用固定类型替换基类中的类型的主要内容,如果未能解决你的问题,请参考以下文章