我正在开发一个碰撞系统,我需要为其复制实体的碰撞器。
我制作了这样的系统,例如我不必一成不变地处理碰撞,(我可能会开始使用 AABB,但可能会更改为 SAT),但无论我使用哪种算法,我都需要对碰撞器进行深度复制将使用。
一方面,深拷贝是一种要求,而复制和交换习语似乎是我应该去的。
另一方面,我collidable
不需要是接口以外的任何东西,所以没有理由不做纯粹的虚拟。
因此,我开始写这个:
class collidable
{
public:
virtual collidable& operator= (collidable other)=0;
};
但我不能复制构造collidable
,因为它是纯虚拟的。
请注意,在同一个程序中,我永远不会同时使用多个碰撞算法,因此不会出现方法冲突。
我真的不知道我做错了什么,是设计方面还是技术方面,所以我完全愿意接受建议。
如何强制从可碰撞的类派生来实现 operator= ?