Ahoj, snažím sa vytvoriť ukazateľ na funkciu, ktorá preberá ako parametre dve referencie na odvodenú triedu. Kedže sa jedná o odvodenú triedu, vytvorím si teda ukazateľ na funkciu ktorej dátové typy parametrov budú referencie na základnú triedu z ktorej bolo dedené.
Napríklad mám vytvorený dátový typ predstavujúci ukazateľ na funkciu
typedef bool(*MOT_fptr)(const ColliderMesh::Mesh&, const ColliderMesh::Mesh&)
potom tu mám funkciu, ktorá vracia ukazateľ na funkciu na základe zvoleného typu
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
break;
case ColliderMesh::Type::Circle:
return &Collider::CircleOverlapTest; // error: return value type does not match the function type
break;
default: return UNDEF_PTR;
break;
}
}
kde funkcie BoxOverlapTest a CircleOverlapTest sú zadeklarované ako
static bool BoxOverlapTest(const ColliderMesh::Rectangle& rect1, const ColliderMesh::Rectangle& rect2);
static bool CircleOverlapTest(const ColliderMesh::Circle& circ1, const ColliderMesh::Circle& circ2);
Obidve triedy ColliderMesh::Rectangle a ColliderMesh::Circle sú odvodené zo základnej(rodičovskej) triedy ColliderMesh::Mesh.Avšak pokiaľ sa snažím vrátiť z funkcie GetMOT referenciu na funkciu &Collider::BoxOverlapTest a &Collider::Circledostávam chybu return value type does not match the function type.
Otázka teda znie.. je vôbec niečo takéto možné a iba mi niečo uniká, alebo mal by som hľadať iné riešenie ?