[STL] vector<string> et appel de fonctions.
Bonjour.
Je suis un peu perplexe devant ce problème :
J'ai un objet qui possède un vecteur de string.
Cet objet possède une fonction qui permet de récupérer une de ces chaines de façon personnalisée. J'utilise donc un ostringstream pour pouvoir rajouter du texte mis en forme (conversion de nombre, alignement,...) à cette chaine. Je renvoie la chaine et, lorsque je sors de la fonction mon code plante car il n'arrive plus à désallouer cette chaine.
Et là, je vois plus trop ce qu'il faut que je fasse.
En gros, voici mon code :
A.h :
Code:
1 2 3 4 5 6
| class A
{
vector<string> strtab;
string func(Obj o);
} |
B.h :
Code:
1 2 3 4 5
| class B
{
A link;
void foo();
} |
A.cpp :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| A::A()
{
strtab.push_back("chaine 1");
strtab.push_back("chaine 2");
strtab.push_back("chaine 3");
//...
}
string A::func(Obj o)
{
ostringstream ret;
ret << "[E" << o.id << "] "<< strtab[o.id];
return ret.str();
} |
B.cpp :
Code:
1 2 3 4 5 6
| void B::foo()
{
Obj o;
o.id = 1;
string str = link.func(o);
} |
Et donc le problème survient quand je sors de B::foo, lorsqu'il faut désallouer str. Si quelqu'un à une idée, ce serait vraiment bien car là, je ne vois même pas où chercher...
Pour info, j'utilise MS VC++ 6.0.
D'avance, merci.
Joe.