12-02-2009 06:00:06
- Magun
- Administrateurs

- 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
Hors ligne
12-02-2009 14:26:46
- Metallizer
- Membres

- 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
12-02-2009 18:18:45
- Magun
- Administrateurs

- 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 ![]()
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
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
12-02-2009 23:17:45
- Magun
- Administrateurs

- 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 ![]()
Hors ligne
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
13-02-2009 17:20:32
- Magun
- Administrateurs

- 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 ![]()
a la rigueur s'il y avais un lien sympa pour expliquer comment cela marche ...
Hors ligne
14-02-2009 22:20:30
- Magun
- Administrateurs

- 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 ![]()
jais essayer d'utiliser un "vector" a la place d'une "list" dans la class EntityManager, mais pareille ![]()
Hors ligne
15-02-2009 23:07:46
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 78.115.102.59
- Courriel Site web
problème résolue sur le SDZ ![]()
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 ![]()
merci a vous tout de même ![]()
sur ceux bon codage a tous ( et à toutes ? ) ![]()
Hors ligne



