【发布时间】:2014-11-05 00:41:09
【问题描述】:
假设我有一个模板类:
template <typename T> class StringDeque:
public std::deque<T>
{
public:
...
private:
typedef std::deque<T> BaseClass;
};
假设我想创建具体的类ArrayString 其中T=std::string。
实现这一目标的正确方法是什么:
定义
#define ArrayString StringDeque<string>
typedef
typedef StringDeque < string > ArrayString;
继承
class ArrayString :
public StringDeque < string > {};
我不确定所有建议是否都有效。无论如何,我正在尝试找出最适合哪种做法。
【问题讨论】:
-
我认为 typedef 不适用于模板,但你可以说
using ArrayString = StringDeque<std::string>; -
@Melkon Typedef 适用于类型,类模板的实例化是一种类型,所以它工作得很好。
标签: c++ templates concrete-inheritance