【发布时间】:2017-11-17 23:08:20
【问题描述】:
给定一个 C++ 类:
template<typename T>
class A {
public:
int a;
T x;
int getA() {return a;}
};
模板特化是否可以从 A 中“继承”(没有实际的 C++ 继承)成员,例如 a 和 getA()?此外,当编写为类执行大量模板特化的代码时,我应该多次键入相同的代码(这有点违背模板的全部目的),还是重组类以适应特化(例如,通过封装另一个模板类成员,因此特化仅限于该类)?
【问题讨论】:
-
首先,您自己部分回答了这个问题,他说“重组类以使其适应专业化(例如,通过在内部封装另一个模板类成员,以便专业化仅限于该类) ”。其次,继承有没有问题?将通用代码放在基类中对我来说似乎是个好主意。
-
我只是想问是否有另一种方法只使用模板并且不需要额外的类。当然,其他想法也不错,但学习不同的选择会增加灵活性。 :)
-
问题是你需要一个类的接口片段成为另一个类的一部分,所以这正是继承的用例。我不认为有另一种方法不是非常复杂来实现它。偏专精呢?即使您必须重写某些成员,您也会这样做一次而不是 N 次。
标签: c++ templates template-specialization