Bonjour à tous,

Lorsque tente de compiler mon programme, j'ai les warnings suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
In member function : (un truc bien barbare) :
__top might be used uninitialized in this function
__tmp might be ... (idem)
Ces variables sont définie dans un fichier de la STL: stl_tree.h, donc ça ne m'aide pas vraiment pour savoir quoi modifier dans mon code

Sans vous mettre tous le code, je vais essayer de vous décrire le structure du code :


Dans le header :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
namespace point
{
    class Vector3D {};
}
namespace color
{
    struct Color32b {};
}
namespace object
{
    typedef std::vector<point::Vector3D> pset_type;
    typedef std::map<color::Color32b,pset_type> pmap_type;
    class Object
    {
        pmap_type pointMap;
        Object(const pmap_type &);
    }
}
Donc au final pmap_type c'est : map<Color32b,vector<Vector3D>>

Dans mon .cpp, je ne fait pas grand chose, mais pourtant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
Object::Object(const pmap_type & pm):pointMap(pm){}
Et c'est en rajoutant cette dernière ligne que mes warnings aparaissent...

Et donc mes questions sont les suivantes :

1) Qu'y a t-il dans mon code pourrait ne pas initialiser ces 2 variables ?
2) Vu que ce n'est que des warnings, ce n'est pas trop grave pour l'instant, mais que risque t-il de se passer à l'execution ? Y a t il vraiment un risque d'un comportement "indertéminé" à l'execution ?

3) Au début, je n'avais qu'une classe comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
//Dans le header :
class Object
{
    std::vector<Vector3D> pointSet;
    Object(const std::vector<Vector3D> &);
}
 
//Dans le .cpp
Object::Object(const std::vector<Vector3D> & ps):pointSet(ps);
Et elle ne déclenchait aucun warning... Donc le problème serait bien sur la map ? Mais pourquoi en faisant pareil avec le vector ça le faisait pas ?

Bref pleins de questions... Merci de bien vouloirs m'éclairer