Dan*_*ite 11 c++ inheritance templates typedef
C++无法使用typedef创建模板或者键入模板化模板.我知道如果我继承并使我的课成为一个模板,它就会起作用.
例子:
// Illegal
template <class T>
typedef MyVectorType vector<T>;
//Valid, but advantageous?
template <class T>
class MyVectorType : public vector<T> { };
Run Code Online (Sandbox Code Playgroud)
这样做有利于我可以"伪造"一个typedef还是有更好的方法来做到这一点?
Mag*_*iie 13
C++ 0x将使用using关键字添加模板typedef .
您的解决方案声明了一个新类型,而不是类型"别名",例如,您无法使用a初始化MyVectorType &(引用)vector<T>.这对您来说可能不是问题,但如果是,但您不想在代码中引用向量,则可以执行以下操作:
template <typename T>
class MyVectorType {
public:
typedef std::vector<T> type;
};
Run Code Online (Sandbox Code Playgroud)
Dav*_*Ray 10
继承不是你想要的.模仿模板化typedef的更惯用的方法是:
template <typename T> struct MyVectorType {
typedef std::vector<T> t;
};
Run Code Online (Sandbox Code Playgroud)
请参考typedef,如下所示:
MyVectorType<T>::t;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2228 次 |
| 最近记录: |