我有一个模板类
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 *>
等等。
这是好设计吗?如何设计这样的特征类(完全静态方法或允许继承)?或者包装类是一个很好的解决方案?
还有哪些其他选择?