#1 

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


#2 

15-01-2009 17:18:56

hardcpp
Membres
Avatar de hardcpp
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


#3 

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


#4 

15-01-2009 18:49:14

hardcpp
Membres
Avatar de hardcpp
Date d'inscription:
Messages: 229
IP: 83.198.114.15
Courriel

ou utilise un std::vector


Hors ligne


#5 

15-01-2009 20:23:49

tmyke
Administrateurs
Avatar de tmyke
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 wink


Force et sagesse...

Hors ligne


#6 

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


#7 

16-01-2009 05:17:41

tmyke
Administrateurs
Avatar de tmyke
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 wink


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 wink


Force et sagesse...

Hors ligne


#8 

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


#9 

16-01-2009 12:16:52

tmyke
Administrateurs
Avatar de tmyke
Date d'inscription:
Messages: 1025
IP: 62.201.129.226
Courriel

Pas de soucis, l'essentiel c'est que cela fonctionne wink


Force et sagesse...

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
567 invités en ligne
membre en ligne: -
RSS Feed