我正在开发一个边界框/碰撞检测系统,我使用不同类型的边界体积,id像所有边界体积一样派生相同的基类,然后使用纯虚函数强制所有派生类实现基本函数喜欢
isCollidingWith(BoudingBox)
但是这给我带来了麻烦:我不希望他们为每个 BoudingVolume
类型实现一个函数。因此,如果我有一个边界框和一个边界球体,则球体类和框类都应该实现
isCollidingWith(BoundingBox)
isCollidingWith(BoundingSphere)
如果我随后创建一个新的 BoundingVolume,如 BoundingCylinder
(通过从基类派生),我希望编译器抛出错误,直到 BoundingBox 和 BoundingSphere 实现了 isCollidingWith
> 新的 Cylinder
类型的函数(以及 ofc,直到 Cylinder
为 Box
实现了 isCollidingWith
,球体
和圆柱体
。
我不确定如何实现这一点,但我考虑过使用 CRTP。 这可能吗?
最佳答案
当你在基类中创建纯虚函数时,那么它对于派生类来说是强制实现的,如果派生类没有实现它,那么编译器将给出你犯了错误。所以你不必关心纯虚函数是否实现。
关于C++ 依赖于派生类的纯虚函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47374377/