我想要一个由它们的基类链接的对象列表。所以我将有一个类来管理所有不同风格的对象,但以它们的基类形式统一存储。我希望能够处理两个对象之间的测试碰撞,一个是球体,另一个是立方体。我会说调用一个像 sphere->collisionTest(cube) 这样的函数。使用多态性我可以调用碰撞测试方法,它将转到球类中的适当方法,但我需要一种方法来识别/覆盖球类中的碰撞测试方法。覆盖 sphere.collisionTest(sphere) 或 sphere.collisionTest(cube) 的参数。这是我尝试过的一些示例代码。在这里当我调用collisionTest(object-> getObject()) 方法我相信我应该得到立方体对象,然后它将参数覆盖并调用collisionTest(Cuboid *object) 方法。相反,它调用相同的碰撞测试(Geom *object)。
int main()
{
Geom *geomHandler1;// = new Geom();
Geom *geomHandler2;// = new Geom();
Sphere *sphereGeom = new Sphere();
Cuboid *cuboidGeom = new Cuboid();
geomHandler1 = (Geom*)sphereGeom;
geomHandler2 = (Geom*)cuboidGeom;
geomHandler1->collisionTest(geomHandler2);
return 0;
}
#include "Sphere.h"
void Sphere::collisionTest(Geom *object)
{
collisionTest(object->getObject());
}
void Sphere::collisionTest(Cuboid *object)
{
}
Sphere* Sphere::getObject()
{
Sphere *husk = new Sphere();
return husk;
}
#include "Cuboid.h"
void Cuboid::collisionTest(Geom *object)
{
}
void Cuboid::collisionTest(Sphere *object)
{
}
Cuboid* Cuboid::getObject()
{
Cuboid *husk = new Cuboid();
return husk;
}