C++无法使用typedef创建模板或者键入模板化模板.我知道如果我继承并使我的课成为一个模板,它就会起作用.
例子:
// Illegal templatetypedef MyVectorType vector ; //Valid, but advantageous? template class MyVectorType : public vector { };
这样做有利于我可以"伪造"一个typedef还是有更好的方法来做到这一点?
C++ 0x将使用using
关键字添加模板typedef .
您的解决方案声明了一个新类型,而不是类型"别名",例如,您无法使用a初始化MyVectorType &
(引用)vector
.这对您来说可能不是问题,但如果是,但您不想在代码中引用向量,则可以执行以下操作:
templateclass MyVectorType { public: typedef std::vector type; };
继承不是你想要的.模仿模板化typedef的更惯用的方法是:
templatestruct MyVectorType { typedef std::vector t; };
请参考typedef,如下所示:
MyVectorType::t;