[VC9][C++] Le compilateur confond des methodes
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:
1 2 3
| class ZResource: public ZHasDisplayableObject,
public ZHasDescription,
public Ogre::UserDefinedObject |
UserDefinedObject:
Code:
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:
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:
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:
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:
Citation:
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