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

为模板化类创建类型别名

如何解决《为模板化类创建类型别名》经验,为你挑选了3个好方法。

而不是使用

std::vector ObjectArray;


我希望它是

MyArray ObjectArray;


保留所有std :: vector方法.(比如push_back(),reserve(),...等)

但是,使用

typedef std::vector MyArray;

不行.我应该使用模板吗?怎么样?



1> Thomas..:

你真正想要的是模板化的typedef.不幸的是,当前版本的C++不支持这些,但它们将在C++ 0x中添加.

目前,这是一个可能的解决方法:

template struct My {
    typedef std::vector Array;
};

My::Array ObjectArray


无论这是否比直接使用更好std::vector,我会留给你决定.



2> Ryan Haining..:

从C++ 11开始,您可以使用模板化类型别名

template 
using MyArray = std::vector;

如果你想更通用,你可以使用一个可变参数模板(在矢量的情况下允许分配器,而不必具体)

template 
using MyArray = std::vector;



3> keraba..:

其他方式:

#include 

template 
struct MyArray
    :std::vector
{
};

void func()
{
    MyArray my;

    my.push_back(5);

    MyArray::iterator i;
}

为我编译,但你可能会发现vector <>中的某些东西需要"拉上"到MyArray中.

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