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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
class A
{
 
    vector<string> strtab;
    string func(Obj o);
}
B.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
class B
{
    A link;
    void foo();
}
A.cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.