Bonjour,
Voilà j'ai un problème avec la ISceneNode. Dans une classe j'ai une liste de ISceneNode et j'aimerais travailler avec comme par exemple extraire et stocker un objet ISceneNode. Mes importations des headers-files sont correctes. Je pense que mon problème vient du langage C++ ou d'une limitation de cette classe que Irrlicht a développée.
Voici mon code:
header files
class test {
private:
irr::core::array<irr::scene::ISceneNode*> list;
public:
irr::core::array<irr::scene::ISceneNode*> GetList();
};
//Implementation méthode GetList()
array<ISceneNode*> test::GetList(){
return(list);
}
====================================================
int main(){
//START
test* t1= new test();
//Ce code ne fonctionne pas, est-ce quelqu'un sait pourquoi?
//Ou comment solutionner ce problème?
ISceneNode* n1=t1->GetList()[1];
//NOTE: MA LISTE N'EST PAS VIDE!!! ELLE CONTIENT DES ISCENENODES!!!
//END
return 0;
}
Avec visual studio j'ai l'erreur suivante qui apparaît:
irr::core::array<irr::scene::ISceneNode *,irr::core::irrAllocator<irr::scene::ISceneNode *> >::operator[](unsigned int index=1)
Si quelqu'un peut m'aider....
Merci.
A+
Hors ligne
tu ne peut pas faire () et [] a la suite voila comemnt faire :
class test { public: irr::core::array<irr::scene::ISceneNode*> list; }; ==================================================== int main() { test* t1= new test(); ISceneNode* n1=t1->list[1]; delete test; return 0; }
ou alors (a tester)
ISceneNode* n1 = (t1->GetList())[1];
Dernière modification par hardcpp (15-01-2009 18:21:34)
Hors ligne
Merci Hardcpp pour ta rèponse rapide!
Malheureusement le code suivant :
ISceneNode* n1 = (t1->GetList())[1];
Ne change rien. J'ai toujours le même.
Doit-on utiliser un itérator lorsque qu'on une liste de ISceneNode ?
A+
Hors ligne
Ecrire un code tel que GetList()[1]; ne pose pas de soucis en fait. La ou se pose le problème est dans le code de GetList dans ta classe.
Car si tu passe ton champ 'list' en public, et que cherche à accéder à ta liste par le champ directement sans passer par la methode GetList, cela fonctionne très bien
Hors ligne
Salut,
ISceneNode* n1=t1->GetList()[1]; => J'ai essayé ce bout de code mais cela ne fonctionne pas sous Visual Studio. Je ne sais pas trop pourquoi. Et cela même si j'ai un attribut public "list" dans ma classe test.
Mais ceci fonctionne:
ISceneNode* n1=t1->list[1]; // list attribut public dans la class Test (j'ai supprimé la méthode GetList())
Merci pour votre aide.
A+
Hors ligne
bubix :
Salut,
ISceneNode* n1=t1->GetList()[1]; => J'ai essayé ce bout de code mais cela ne fonctionne pas sous Visual Studio. Je ne sais pas trop pourquoi.
Chez moi cela fonctionne très bien avec Visual studio
bubix :
Mais ceci fonctionne:
ISceneNode* n1=t1->list[1]; // list attribut public dans la class Test (j'ai supprimé la méthode GetList())
Merci pour votre aide.
A+
C'est ce que je suggérais plus haut
Hors ligne
Désolé...désolé....désolé!!!! J'ai écrit un nouveau test pour contrôler le contenu de ma liste !!! Effectivement cette liste était vide!
Encore une fois je m'excuse pour cette erreur!
Salutations.
bubix
Hors ligne
Pas de soucis, l'essentiel c'est que cela fonctionne
Hors ligne