当前位置:  开发笔记 > 编程语言 > 正文

继承而不是typedef

如何解决《继承而不是typedef》经验,为你挑选了2个好方法。

C++无法使用typedef创建模板或者键入模板化模板.我知道如果我继承并使我的课成为一个模板,它就会起作用.

例子:

// Illegal
template 
typedef MyVectorType vector;

//Valid, but advantageous?
template 
class MyVectorType : public vector { };

这样做有利于我可以"伪造"一个typedef还是有更好的方法来做到这一点?



1> Magnus Hiie..:

C++ 0x将使用using关键字添加模板typedef .

您的解决方案声明了一个新类型,而不是类型"别名",例如,您无法使用a初始化MyVectorType &(引用)vector.这对您来说可能不是问题,但如果是,但您不想在代码中引用向量,则可以执行以下操作:

template 
class MyVectorType {
public:
  typedef std::vector type;
};



2> Dave Ray..:

继承不是你想要的.模仿模板化typedef的更惯用的方法是:

template  struct MyVectorType {
    typedef std::vector t;
};

请参考typedef,如下所示:

MyVectorType::t;

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有