Bonjour,

Je développe un jeu en C++ sous Windows avec Codeblocks et avec SFML.
Comme le titre l'indique je tente de passer une collection hétérogène , (un vector de pointeurs sur Vaisseau) , à une méthode qui reçoit comme paramètre un vector de pointeur sur Objet.

Tout cela sachant que Vaisseau Hérite d'une classe qui hérite d'Objet.


voici la méthode appelée:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
bool Objet::collision(vector< Objet*>& listeObjetsDistants )
{
...
}
et voici l'appel de celle ci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
m_listeVaisseau[i]->collision(m_listeVaisseau);
sachant que m_listeVaisseau est déclarée comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
std::vector<Vaisseau*> m_listeVaisseau;
Je sais qu'en java il faut résoudre ce problème avec l’implémentation d'une methode générique qui reçoit n'importe quel sous-type de Objet*.

Mais en C++, je ne connais pas d'équivalent, et j'aimerai bien éviter le plus possible de devoir caster tout le vector car la complexité algorithmique ralentirait beaucoup le jeu.