我认为应该是一个简单的设计,但我遇到了一个不涉及RTTI(或返回类型的方法)的解决方案。我有一个通用的Shape接口,它只包含一个纯虚拟绘制方法。在我的程序的其他地方,我有一个指向Shapes的指针向量,我在每个Shape上调用draw调用。
现在,我想扩展Shape的功能,以允许Shapes相互比较并返回它们是否重叠。显然,此代码取决于Shape子类的特定类型 - 也就是说,确定两个圆是否重叠的代码与确定圆和矩形是否重叠的代码不同。现在,我只是使用typeid后跟动态强制转换将两个对象分配给正确的重叠代码,这看起来非常糟糕。是否有一种模式或技术可以用来避免使用typeid和static_casts?