gpt4 book ai didi

c++ - 函数数组 C++ 初始化错误?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:15:55 25 4
gpt4 key购买 nike

我正在尝试创建一个 bool 函数数组,这就是我目前所在的位置。

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'

我想我在接受同样的论点,所以我真的不明白这里的问题是什么。谢谢

最佳答案

问题是 sphere2SphereDIY 类的成员函数,需要一个对象来放入它的 this 指针。

由于您的 sphere2Sphere 函数不使用 this 指针(我认为),您可以将其设为 static,这意味着它将然后匹配 fn 类型(因为编译器会知道它不需要(隐藏的)this 参数)。

注意:static 关键字出现在类定义的方法声明中,此处未显示。

关于c++ - 函数数组 C++ 初始化错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33624596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com