1 pièce(s) jointe(s)
Disparition de variables après push_back
Bonjour à tous,
J'ai un petit problème avec un programme que je développe.
Je précise tout de suite, je ne suis pas de formation informatique, je fais de l'imagerie, donc je sais que mon code est surement mal présenté, pas optimisé et tout ce qu'il ne faut pas ...
Après cette mise en garde je me lance.
J'aurais besoin de votre aide ou d'une idée pour contourner le problème suivant.
En fait j'ai besoin de récupérer des infos dans des fichiers VRML mais des données assez sommaires donc j'ai fait un petit analyseur pour récupérer ce que je veux.
Je cherche à récuperer des objets que je met dans une classe Maillage, puis l'ensemble des maillages trouvés forment une sceneVRML.
En fin de message je mets la déclaration de ces deux classes.
Mon problème se trouve dans l'image en pièce jointe.
Il s'agit de la fenêtre d'exécution du programme et le bout de code concerné (que j'essaye de debuger d'où l'amoncellement de cout << ...)
Je parcours le fichier VRML et je construis le Maillage m avec les données du fichiers.
Une fois construit j'ai vérifié son contenu il contient bien les données de mon VRML, je veux donc l'ajouter à ma scèneVRML avec le elements.push_back(m);
Tout se passe bien pour les points les couleurs et les facettes (là aussi j'ai affiché explicitement certaines données pour être sur qu'elles correspondent au fichier) mais le vecteur de normales est complètement vide ... plus rien et comme on le voit sa taille est nulle en l'appelant dans éléments alors qu'il y a bien quelque chose dans m.normales. (Pour précision la valeur nbShape correspond au nombre de maillage trouvés dans le VRML au moment donné de l'algorithme elements[nbShape-1] est donc bien le dernier élément ajouté au vecteur.)
Voilà si quelqu'un sait d'où peut venir le problème ou a une idée dessus je le remercie d'avance (surtout que mon message est un peu long désolé)
Garfield
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
template<typename TMaillage,typename TCouleur>
class Maillage{
// Attributs
public :
vector< Point3D<TMaillage> > points;
vector< IndexFacette > facettes;
vector< Couleur<TCouleur> > couleurs;
vector< Point3D<double> > normales;
// Méthodes
public :
Maillage();
Maillage( const Maillage<TMaillage,TCouleur>& m);
Maillage( const vector< Point3D<TMaillage> >& pts,
const vector< IndexFacette >& faces,
const vector< Couleur<TCouleur> >& c,
const vector< Point3D<double> >& n
);
void addPoint3D(const Point3D<TMaillage>& p);
void addFace(const IndexFacette& f);
void addColor(const Couleur<TCouleur>& c);
void addNormal(const Point3D<double>& n);
}; |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
template<typename TMaillage,typename TCouleur>
class sceneVRML{
// Attributs
public :
vector< Maillage<TMaillage,TCouleur> > elements;
// Méthodes
public :
sceneVRML();
sceneVRML(const sceneVRML<TMaillage,TCouleur>& scene);
sceneVRML(char *filename);
int chargerSceneVRML(char *filename);
void ecrireSceneVRML(char *filename);
}; |