我正在尝试创建一个布尔函数数组,这是我目前所处的位置。
typedef bool(*fn)(DIYObject*, DIYObject*);
static fn collisionfunctionArray[] =
{
DIY::sphere2Sphere
};
bool DIY::sphere2Sphere(DIYObject* obj1, DIYObject* obj2)
{
DIYSphere *sphere1 = dynamic_cast<DIYSphere*>(obj1);
DIYSphere *sphere2 = dynamic_cast<DIYSphere*>(obj2);
if (sphere1 != NULL && sphere2 != NULL)
{
float X;
X= sphere1->m_position.x - sphere2->m_position.x;
X = X *X;
float Y;
Y = sphere1->m_position.y - sphere2->m_position.y;
Y = Y *Y;
float distance;
distance = sqrt(X + Y);
float distanceCompare;
distanceCompare = sphere1->m_radius + sphere2->m_radius;
if (distance < distanceCompare)
{
sphere1->m_velocity = vec3(0,0,0);
sphere2->m_velocity = vec3(0, 0, 0);
}
}
return false;
}
所以目前我只是尝试在数组中插入一个函数,但是我收到了以下错误
Error 2 error C2440: 'initializing' : cannot convert from 'bool (__thiscall DIY::* )(DIYObject *,DIYObject *)' to 'fn'
我想我会接受相同的论点,所以我不能真正理解这里的问题。感谢
答案 0 :(得分:1)
问题是sphere2Sphere
是DIY
类的成员函数,需要一个对象放入其this
指针。
由于您的sphere2Sphere
函数未使用this
指针(我认为),您可以将其设为static
,这意味着它将匹配fn
类型(因为编译器会知道它不需要(隐藏的)this
参数)。
注意:static
关键字位于类定义中的方法声明中,您尚未在此处显示。