【发布时间】:2011-10-17 22:38:17
【问题描述】:
我应该如何 typedef 和 template class ?比如:
typedef std::vector myVector; // <--- compiler error
我知道两种方法:
(1) #define myVector std::vector // not so good
(2) template<typename T>
struct myVector { typedef std::vector<T> type; }; // verbose
我们在 C++0x 中有什么更好的吗?
【问题讨论】:
-
我正在实施一些涉及
template class的事情。最初,我将使用标准类来实现它,然后我想转移到我制作的自定义类。所以我希望该开关应该像更改typedef一样简单。 -
我必须同意大卫的观点。为什么要给它起别名?间接性是导致代码不可读和不可维护的主要原因。但是,您确实给出了一个很好的理由,“抽象”。 stl 的问题在于 API。它会阻止特定的优化。保持相同的 API 并认为你可以做得更好是命运多舛的。编写自己的可增长数组不需要一整天。做它并完成它。或者只是使用 STL 并继续你的生活。
-
宏实现有什么问题?
-
@Strin,技术上没有问题。只是宏不是
namespace/class绑定的。它们是无限的。如果有人想将他们的变量命名为myVector,这是无法做到的。 -
这是非常糟糕的礼仪,IMO,问一些事情,回答你为什么想做某事,然后像@Dan 所做的那样,向提问者解释他们为什么错了。我的意思是,人们应该怎么做?分享他们的整个内部设计文件,向你解释他们正在做一些有效的事情?这完全没有建设性。
标签: c++ templates c++11 typedef