Polymorphisme avec pointeur
Bonjour à tous,
Une petite question sans doute basique pour les gourous du C++:
J'ai une classe abstraite:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
namespace yz {
class RayProvider {
public:
virtual Ogre::Ray getRay(const Ogre::Real x, const Ogre::Real y) = 0;
};
} |
Implémentée, par, par exemple Camera:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
namespace yz {
class Camera : public AbstractMovable, public RayProvider {
public:
Camera(Ogre::Camera* cam);
Ogre::Ray getRay(const Ogre::Real x, const Ogre::Real y);
//Autres fonctions et attributs membres.
};
} |
Ce code interagit avec du code java, et pour des questions de performance, je stock l'adresse du pointeur coté java, puis je le récupère avec un reinterpret_cast.
Ceci fonctionne bien si mon appel fait un reinterpret cast en Camera, mais dès lors que je le fais un
yz::RayProvider* provider = reinterpret_cast<yz::RayProvider*>(Adresse_du_pointeur_de_la_camera);
Toute utilisation de ce provider provoque un crash.
Je suppose que l'accès de la zone mémoire n'est alors pas correct (il appelle une autre méthode à la place), mais je ne sais pas quelle est la bonne méthode pour ne éviter de passer le type concret et ne manipuler que des RayProvider*