#1 

12-02-2009 06:00:06

Magun
Administrateurs
Avatar de Magun
Date d'inscription:
Messages: 910
IP: 78.115.102.59
Courriel  Site web

bon voila je comprend pas pourquoi cela ne marche plus ...

donc pour résumé jais 2 class pour le moment :

  • EntityManager
  • Entity


tout est géré via des std::list<> ( Entity liste pour EntityManager et std::string liste pour Entity )
la ou ça ne colle pas ses que je veut récupéré l'attribut qui se trouve dans un pointeur de Entity qui se trouve dans EntityManager
donc pour résumé dans le main je fait :

    for(int i = 0; i != entity->getNomberEntity(); i++)
    {
        Entity *get = entity->getEntity(i);
        if(get != NULL)
        {
            cout << "At ID : " << get->getID();
            cout << " thas type is " << get->getTypeName();
            cout << " and attribute is : " << get->getAttribute("Attribute").c_str();//! la ou sa ne marche pas
            cout << endl;
        }
    }

les fonctions :
    Entity*EntityManager::getEntity(int loc)
    {
        if(loc <= ent.size())
        {
            int n = 0;
            for (std::list<Entity>::iterator It = ent.begin() ; It != ent.end() ; It++)
                if(n++ == (loc))
                    return &*It;
        }
    }

    std::string Entity::getAttribute(std::string Ent)
    {
        for (std::list<EntityAttribute>::iterator It = Attribute.begin() ; It != Attribute.end() ; It++)
        {
            std::string cmp = ((EntityAttribute)*It).ent;
            if(Ent == cmp)
            {
                return ((EntityAttribute)*It).att;
                break;
            }
        }
        return 0;//for delete warning "control reaches and of non-void function"
    }

voila donc si je récupère l'attribue d'une Entity* cela me retourne : "this application has request the Runtime to terminate ...." exit 0x03
par contre si je passe par le pointeur de l'initialisation de L'Entity, aucun problème ... ( donc ne viens pas de "return ((EntityAttribute)*It).att;" )

je peut poster tout le code s'il y a besoins
merci d'avance tongue

Hors ligne


#2 

12-02-2009 14:26:46

Metallizer
Membres
Avatar de Metallizer
Date d'inscription:
Messages: 100
IP: 90.8.215.113
Courriel  Site web

J'avoue que je pige pas le message d'erreur, y'a des erreurs de compilation ? un plantage de l'appli. Apparemment tu ne nous a communiqué que le code d'erreur retourné par le processus (0x03) ce qui n'est pas très explicite...

Mais à première vue je ne vois pas trop le problème dans ton code. Peux-tu nous donner plus d'informations sur le log d'erreurs ou comment le problème survient ?


Hors ligne


#3 

12-02-2009 18:18:45

Magun
Administrateurs
Avatar de Magun
Date d'inscription:
Messages: 910
IP: 78.115.102.59
Courriel  Site web

voila pour les sources

le programme retourne 3 (0x3)
a la ligne :
cout << " and attribute is : " << get->getAttribute("Attribute");

alors le truc ses pourquoi sa fonctionne pas ci-dessus alors que ceci fonctionne hmm

    for(int i = 0; i != entity->getNomberEntity(); i++)
    {
        //if(get != NULL)
        {
            cout << "At ID : " << ent[i]->getID();
            cout << " thas type is " << ent[i]->getTypeName();
            cout << " and attribute is : " << ent[i]->getAttribute("Attribute");
            cout << endl;
        }
    }

sachant que le debug ne trouve absolument rien . . .
donc alors sa ne vien pas de la fonction "Entity *get = entity->getEntity(i);" sinon cela ne marcherais pas sans l'appelle du code cité en premier
et cela ne devrait pas venir de "getAttribute("Attribute");" car cela marche sur le code cité au dessus . . .

Hors ligne


#4 

12-02-2009 22:58:28

Hawk
Membres
Date d'inscription:
Messages: 91
IP: 160.228.152.6
Courriel  Site web

Je ne sais pas si c'est un élément de réponse, mais il y a un truc qui me choque dans ton code.

    for(int i = 0; i != entity->getNomberEntity(); i++)
    {
        Entity *get = entity->getEntity(i);
        if(get != NULL)
        {
            cout << "At ID : " << get->getID();
            cout << " thas type is " << get->getTypeName();
            cout << " and attribute is : " << get->getAttribute("Attribute").c_str();//! la ou sa ne marche pas
            cout << endl;
        }
    }

Pourquoi avoir mis un ".c_str()" après getAttribute("Attribute") ? La fonction renvoyant un std::string, pas besoin d'un c_str() pour l'afficher, d'ailleurs dans l'exemple que tu montres et qui fonctionne, il n'y est pas....
Je ne sais pas si cette remarque servira à quelque chose, mais bon à part ça, je ne vois pas ce qui cloche.
Bon courage.


Hors ligne


#5 

12-02-2009 23:17:45

Magun
Administrateurs
Avatar de Magun
Date d'inscription:
Messages: 910
IP: 78.115.102.59
Courriel  Site web

oui ".c_str()" ne sert a rien c'était un test, des fois que ... mais cela ne change rien

merci pour la remarque wink

Hors ligne


#6 

13-02-2009 15:26:43

yamashi
Membres
Date d'inscription:
Messages: 50
IP: 75.56.192.222
Courriel

Le watcher dit quoi ?


Hors ligne


#7 

13-02-2009 17:20:32

Magun
Administrateurs
Avatar de Magun
Date d'inscription:
Messages: 910
IP: 78.115.102.59
Courriel  Site web

et bien le debug ne trouve rien il quitte aussi tôt
et le watcher je ne l'utilise pas hmm
a la rigueur s'il y avais un lien sympa pour expliquer comment cela marche ...

Hors ligne


#8 

14-02-2009 22:20:30

Magun
Administrateurs
Avatar de Magun
Date d'inscription:
Messages: 910
IP: 78.115.102.59
Courriel  Site web

je devrais trouver comment contacter la stl a votre avis ?
par ce que je voie vraiment pas d'où cela viens et je nais aucun warning même avec tout les option pour ceux-ci neutral

jais essayer d'utiliser un "vector" a la place d'une "list" dans la class EntityManager, mais pareille hmm

Hors ligne


#9 

15-02-2009 23:07:46

Magun
Administrateurs
Avatar de Magun
Date d'inscription:
Messages: 910
IP: 78.115.102.59
Courriel  Site web

problème résolue sur le SDZ wink
merci quand même, en fait le problème venais de "addEntity(Entity*ent)"

et plus précisément de la façons dont je l'ajoutais, en gros sans le vouloir le fesais une nouvelle Entity* que j'ajoutais grâce à "push_back" seulement ce dernier fessais une copie de l'entity et ne pouvais retourner l'attribue que était alors stoker dans l'Entity* qui se trouvais dans le main

ah était a cause du "return NULL;" dans le "getAttribute", il suffisais de renvoyer une chaine vide smile

merci a vous tout de même tongue
sur ceux bon codage a tous ( et à toutes ? ) wink

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
167 invités en ligne
membre en ligne: -
RSS Feed