Cela fait partie 2 à un problème que j'ai déjà posée: Is it possible to have polymorphic member overloading in C++?C++ problèmes Double Dispatch
En utilisant l'exemple Wiki j'ai créé cet exemple. Mon problème est que le code compilé ne recherche jamais le vtable, et utilise toujours la base au lieu de la classe héritée. Voici mon code:
#include <iostream>
class xEntity;
class xVehicle;
class xMapObject
{
public:
virtual void Bump(xMapObject&) { std::cout << "MapObject Bump MapObject\n"; };
virtual void Bump(xEntity&) { std::cout << "MapObject Bump Entity\n"; };
virtual void Bump(xVehicle&) { std::cout << "MapObject Bump Vehicle\n"; };
};
class xEntity : public xMapObject
{
public:
virtual void Bump(xMapObject&) { std::cout << "Entity Bump MapObject\n"; };
virtual void Bump(xEntity&) { std::cout << "Entity Bump Entity\n"; };
virtual void Bump(xVehicle&) { std::cout << "Entity Bump Vehicle\n"; };
};
class xVehicle : public xEntity
{
public:
virtual void Bump(xMapObject&) { std::cout << "Vehicle Bump MapObject\n"; };
virtual void Bump(xEntity&) { std::cout << "Vehicle Bump Entity\n"; };
virtual void Bump(xVehicle&) { std::cout << "Vehicle Bump Vehicle\n"; };
};
int main(int argv, char **argc)
{
xEntity Entity;
xVehicle Vechile;
xMapObject &EntityRef = Entity;
xMapObject &VehicleRef = Vechile;
VehicleRef.Bump(EntityRef);
return 0;
}
Cependant, la sortie est toujours:
Vehicle Bump MapObject
Toute aide sur ce mystère est très apprécié.
Cela fait beaucoup de sens maintenant. Je vous remercie! –
Si cela répond à votre question, vous devez la marquer comme acceptée. – Puppy
Je devais attendre que la minuterie expire. –