c++ - 使用模板(而不是继承)对类中的类型进行规范

标签 c++ templates

从类继承时,只需查找层次结构即可了解对您施加的要求和限制。例如,您可以通过查看父类来找出需要定义哪些方法(纯虚拟)。如果选择使用模板(如果符合要求),那么事情就不那么清楚了。模板类的方法可能需要存在多个用于类型的方法。

我遇到了一个必须使用的复杂类。我不知道我的类型(类/对象)应该有什么方法。我能找到的唯一方法是通过编译,编译器会让我知道需要哪些方法。这就像从抽象类继承而不访问头文件一样。这有点痛苦,因为弄清楚方法规范(签名)非常耗时。

现在,该类的原始设计者可以放置一些关于预期存在哪些方法及其签名的文档,但我忍不住想知道是否有一种方法可以对代码进行 self 记录(或者是已经,但我不知道如何查看它?)。编译和查看错误不是唯一的方法,不是吗?

最佳答案

您实质上描述的是 C++0x concepts 的问题类型。我们将通过为程序员提供一种在编译时强制执行类型要求的方法来解决这个问题。但由于时间限制,它于 2009 年 7 月被删除。

Boost 中有一个仅包含库的解决方案,称为 Concept Check Library (BCCL)。然而,there are differences BCCL 和 C++0x 概念之间的关系。这是与我们当前语言的概念最接近的东西。

如果您不想使用 BCCL,那么文档是下一个最好的选择。

关于c++ - 使用模板(而不是继承)对类中的类型进行规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7362983/

相关文章:

c++ - C++ 混淆中的引用

c++ - 弃用的转换错误

c++ - 与英特尔编译器混合的 Fortran/C++ : undefined references to 'system_'

C++ 模板如何重载运算符和访问私有(private)属性

c++ - 模板化运行时检查调用包装器以检测输入参数或返回值中的转换溢出

python - 当模型位于不同应用程序中时,ManytoMany 字段 django 模板

c++ - 在 C/C++ 代码中查找指针是否静态等同于停止问题?

c# - 多态或泛型方法更好? C#

c++ - 指针作为非类型模板参数

c++ - 如何在C++中动态分配数组