15-01-2009 15:49:35
- bubix
- Membres
- Date d'inscription:
- Messages: 9
- IP: 193.170.133.194
- Courriel
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
15-01-2009 17:18:56
- hardcpp
- Membres

- Date d'inscription:
- Messages: 229
- IP: 83.198.114.15
- Courriel
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];Hors ligne
15-01-2009 17:48:31
- bubix
- Membres
- Date d'inscription:
- Messages: 9
- IP: 193.170.133.194
- Courriel
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
15-01-2009 18:49:14
- hardcpp
- Membres

- Date d'inscription:
- Messages: 229
- IP: 83.198.114.15
- Courriel
ou utilise un std::vector
Hors ligne
15-01-2009 20:23:49
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 86.218.250.229
- Courriel
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 ![]()
Force et sagesse...
Hors ligne
15-01-2009 22:31:52
- bubix
- Membres
- Date d'inscription:
- Messages: 9
- IP: 193.170.133.194
- Courriel
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
16-01-2009 05:17:41
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 86.218.250.229
- Courriel
bubix Ecris:
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 Ecris:
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
Force et sagesse...
Hors ligne
16-01-2009 10:28:11
- bubix
- Membres
- Date d'inscription:
- Messages: 9
- IP: 193.170.133.194
- Courriel
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
16-01-2009 12:16:52
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 62.201.129.226
- Courriel
Pas de soucis, l'essentiel c'est que cela fonctionne ![]()
Force et sagesse...
Hors ligne



