【发布时间】:2021-03-08 14:37:09
【问题描述】:
您好,我正在尝试创建函数指针,它需要两个对基类的引用并为其分配函数,它需要两个对派生类的引用。
假设我已经创建了函数指针
typedef bool(*MOT_fptr)(const ColliderMesh::Mesh&, const ColliderMesh::Mesh&)
然后我有一个函数,它返回指向所选函数的函数指针
MOT_fptr GetMOT(ColliderMesh::Type type)
{
switch (type)
{
case ColliderMesh::Type::Rectangle:
return &Collider::BoxOverlapTest; // error: return value type does not match the function type
case ColliderMesh::Type::Circle:
return &Collider::CircleOverlapTest; // error: return value type does not match the function type
default:
return UNDEF_PTR;
}
}
函数BoxOverlapTest 和CircleOverlapTest 声明为
static bool BoxOverlapTest(const ColliderMesh::Rectangle& rect1, const ColliderMesh::Rectangle& rect2);
static bool CircleOverlapTest(const ColliderMesh::Circle& circ1, const ColliderMesh::Circle& circ2);
ColliderMesh::Rectangle 和 ColliderMesh::Circle 都派生自基类 ColliderMesh::Mesh。但是当返回&Collider::BoxOverlapTest 和&Collider::Circle 时出现编译错误,上面写着return value type does not match the function type。
所以问题是......这是否可能是我想要实现的目标,只是错过了一些东西,还是我应该寻找其他解决方案?
【问题讨论】:
标签: function pointers polymorphism function-pointers return-type