Bonjour,

Je vous explique la situation:

Je code une sorte d'interface graphique pour un jeu avec Ogre.
Lorsqu'on ajoute des objets dans le SceneGraph il donne la possibilite d'affecter a l'entite un objet personnel pour peu qu'il herite d'une classe.

J'ai cree une classe ZResource et ZPlayer qui heritent toute deux de la classe:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
class ZResource: public ZHasDisplayableObject,
                 public ZHasDescription,
                 public Ogre::UserDefinedObject
UserDefinedObject:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
    class _OgreExport UserDefinedObject
    {
    public:
        UserDefinedObject();
        virtual ~UserDefinedObject() {}
        virtual const String& getTypeName(void) const;
        virtual long getTypeID(void) const;
 
    };

que j'ai redefinis dans mon code comme ceux ci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
const Ogre::String&			ZResource::getTypeName(void) const
{
	return ZResource::TYPE_STRING;
}
 
long 						ZResource::getTypeID(void) const
{
	return RESOURCE_TYPE;
}
Meme si je doute que se soit interressant:
lorsque j'ajoute un element a ma liste je fait ceci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
void ZScene::addResourceToScene(ZResource *disp)
{
	this->addEntityToScene(disp);
	disp->getDisplayableObject()->getEntity()->setUserObject(reinterpret_cast<Ogre::UserDefinedObject *> (disp));
}

et au clic:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
Ogre::MovableObject *mov = (*it).movable;
....
					Ogre::UserDefinedObject *u = mov->getUserObject();
 
 
					std::cout << "id de lobjet = " << u->getTypeName()
					<< std::endl;
et sur le std::cout j'ai cette erreur:


Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.
Et en debugant je vois que lors de l'appel a la methode il appel une autre methode a savoir setVisible d'une autre interface (ZHasDisplayableObject)


Donc voila je ne comprends pas comment ca a pu se passer.
A savoir que j'ai fait plusieurs rebuild, en debug et en release, j'ai le meme probleme ...

Si qqun a une idee ca m'aiderais beaucoup
Merci d'avance