让我从一个具体的例子开始。在 C++ 中,我在抽象基类下有一个类层次结构CollisionVolume
。任何碰撞体积都需要能够detectCollision
与任何其他体积。这个碰撞代码是专门基于存在的两个子类的,但它是可交换的:detectCollision(a, b) == detectCollision(b, a)
.
我需要使用类似于虚函数的机制,因为对象通常属于抽象基类。但是,如果我使用典型的虚方法,则选择的函数只能取决于操作数之一的类型,而不是两者。我能够做到这一点的唯一方法是使用 RTTI 或类似 RTTI 的机制。
有没有更清洁的方法来做到这一点?