#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'avancetongue

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 fonctionnehmm

    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 remarquewink

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 pashmm
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-cineutral

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

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 SDZwink
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 videsmile

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

Hors ligne


OptionsLiens officielsCaractéristiquesStatistiquesCommunauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1441 sujets
11339 messages
Dernier membre inscrit: Saidov17
94 invités en ligne
membre en ligne: -
RSS Feed