【发布时间】:2010-05-30 21:08:02
【问题描述】:
我有一个模板类
template <typename T>
class MyContainerClass
对于要替换 T 的类型,它必须满足许多要求:例如, get_id()、int data() 等
显然没有一个基本类型 (POD) 是可替代的。我可以提供的一种方式 这是通过提供这些功能的 POD 的包装器。这是可以接受的吗 方式?
另一种方法是将模板更改为:
template < typename T, typename C=traits<T> >
class MyContainerClass
在 MyContainerClass 中,在 T 对象上调用 traits::data() 而不是 data()。
我会专攻traits<int>, traits<const char *>等。
这是好的设计吗?我如何设计这样一个特征类(完全静态方法或允许 继承)?还是包装类是一个好的解决方案?
还有哪些其他选择?
【问题讨论】: