#0 

12-02-2009 07:00:06

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 907
Corrections: 2
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 :

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;
        }
    }

les fonctions :

Code:

    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;
        }
    }

Code:

    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

Dernière modification par Magun (12-02-2009 08:00:40)

Hors ligne


#1 

12-02-2009 15:26:46

Metallizer
Abonné
Lieu: Région Parisienne
Date d'inscription: 07-01-2007
Messages: 100
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


#2 

12-02-2009 19:18:45

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 907
Corrections: 2
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

Code:

    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


#3 

12-02-2009 23:58:28

Hawk
Membre
Lieu: Wissous
Date d'inscription: 08-11-2008
Messages: 91
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.

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


#4 

13-02-2009 00:17:45

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 907
Corrections: 2
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


#5 

13-02-2009 16:26:43

yamashi
Membre
Date d'inscription: 02-01-2009
Messages: 50

Le watcher dit quoi ?

Hors ligne


#6 

13-02-2009 18:20:32

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 907
Corrections: 2
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


#7 

14-02-2009 23:20:30

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 907
Corrections: 2
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

Dernière modification par Magun (14-02-2009 23:22:29)

Hors ligne


#8 

16-02-2009 00:07:46

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 907
Corrections: 2
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

Dernière modification par Magun (16-02-2009 00:10:31)

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
881 membres
1426 sujets
11116 messages
Dernier membre inscrit: Bidule
15 invités en ligne
Aucun membre connecté
RSS Feed