C++ 依赖于派生类的纯虚函数

标签 c++ inheritance derived-class pure-virtual

我正在开发一个边界框/碰撞检测系统,我使用不同类型的边界体积,id像所有边界体积一样派生相同的基类,然后使用纯虚函数强制所有派生类实现基本函数喜欢

  • isCollidingWith(BoudingBox)

但是这给我带来了麻烦:我不希望他们为每个 BoudingVolume 类型实现一个函数。因此,如果我有一个边界框和一个边界球体,则球体类和框类都应该实现

  • isCollidingWith(BoundingBox)
  • isCollidingWith(BoundingSphere)

如果我随后创建一个新的 BoundingVolume,如 BoundingCylinder (通过从基类派生),我希望编译器抛出错误,直到 BoundingBox 和 BoundingSphere 实现了 isCollidingWith > 新的 Cylinder 类型的函数(以及 ofc,直到 CylinderBox 实现了 isCollidingWith球体圆柱体

我不确定如何实现这一点,但我考虑过使用 CRTP。 这可能吗?

最佳答案

当你在基类中创建纯虚函数时,那么它对于派生类来说是强制实现的,如果派生类没有实现它,那么编译器将给出你犯了错误。所以你不必关心纯虚函数是否实现。

关于C++ 依赖于派生类的纯虚函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47374377/

相关文章:

python - xtensor 类型的性能与 NumPy 的简单归约

c++ - 如何准确地包含 POCO 库?

复杂方程的 C++ 编译器优化

c++ - UINT_MAX 是否所有位都设置为 1?

javascript - 从扩展的Electron类中调用类方法时出错

java - 在父类(super class)的所有子类上调用方法?

java - 实现通用接口(interface)和继承

Python 3 : Returning a new child class instance from an inherited method, 当子构造函数的参数多于父构造函数时

c++ - 子类化并使用基类初始化器

c++ - 在 .cpp 中为派生类实现构造函数?