Geo*_*dik 71 c++ templates type-safety
C++ 0x具有模板别名(有时称为模板typedef).看到这里.目前的C++规范没有.
你喜欢用什么来解决这个问题?容器对象还是宏?你觉得它值得吗?
Kon*_*lph 103
你喜欢用什么来解决这个问题?容器对象还是宏?你觉得它值得吗?
规范的方法是使用这样的元函数:
template <typename T>
struct my_string_map {
typedef std::map<std::string, T> type;
};
// Invoke:
my_string_map<int>::type my_str_int_map;
Run Code Online (Sandbox Code Playgroud)
这也用在STL(allocator::rebind<U>)和许多库中,包括Boost.我们在生物信息库中广泛使用它.
它很臃肿,但99%的情况下它是最好的选择.在这里使用宏不值得许多缺点.
(编辑:我修改了代码以反映Daniel在评论中指出的Boost/STL约定.)
xgh*_*ost 10
Run Code Online (Sandbox Code Playgroud)template <typename T> struct my_string_map : public std::map<std::string,T> { };
您不应该从没有虚拟析构函数的类继承.它与派生类中的析构函数有关,它们应该在它们应该被调用时,你最终会得到未分配的内存.
据说你可能*****在上面的实例中可能会逃脱它,因为你没有向你的派生类型添加更多数据.请注意,这不是认可.我仍然建议你不要这样做.你可以这样做的事实并不意味着你应该这样做.
编辑:是的,这是对ShaChris23帖子的回复.我可能错过了一些东西,因为它出现在他/她的信息之上而不是下面.
| 归档时间: |
|
| 查看次数: |
39846 次 |
| 最近记录: |