gpt4 book ai didi

关于模板类型的 C++ 设计问题

转载 作者:行者123 更新时间:2023-11-30 03:10:41 26 4
gpt4 key购买 nike

我有一个模板类

  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 *>等等

这是好的设计吗?我如何设计这样的特征类(完全静态方法或允许继承)?还是包装类是一个好的解决方案?

还有哪些其他选择?

最佳答案

另一种解决方法是针对特定类型专门化模板,例如

template <>
class MyContainerClass<int>

然后很明显地实现使用 int 容器所需的一切。

但我认为 traits-solution 要好得多。它还将允许您在以后创建的其他容器和其他类中重用这些特征。

关于关于模板类型的 C++ 设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2940321/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com