Bonsoir à tous.
Je suis bien conscient que 3 questions dans un même sujet n'est peut-être pas une chose très bien à faire. Mais étant donné que ces questions sont relativement fermées et toutes en rapport avec les vectors, je me permet...![]()
D'après votre exemple d'utilisation des vectors dans la FAQ C++, la déclaration
devrait créer un vector de Symbole vide du nom de symboles.
Code : Sélectionner tout - Visualiser dans une fenêtre à part std::vector<Symbole> symboles;
Maintenant supposons que l'on programme une classe TableSymboles dont l'unique attribut sera le vector déclaré ci-dessus. Si cette même déclaration est écrite dans TableSymboles.h.
Est-il nécessaire de faire quelque chose dans le constructeur si le vector est déjà créé:
Supposons maintenant que de la Symbole dérivent plusieurs autres classes (Derive1, Derive2) qui contiennent plus d'attributs que Symbole et donc nécessitent plus de place mémoire.
Est-il possible de conserver la déclaration de vector ci-dessus, ou bien est-ce que lors de l'ajout d'une instance de Derive2 au vector, il n'y aura pas la place nécessaire pour recevoir l'instance de Derive2 complètement:
Dernière question moins théorique.
![]()
J'ai commencé à coder en supposant qu'il ne fallait rien faire dans le constructeur de ma classe TableSymboles et que l'ajout d'une instance de classe dérivé de Symbole dans un vecteur de Symbole ne posait pas de problème.
Lors de la compilation d'un TableSymboles.cpp comprenant seulement le constructeur, j'obtiens ceci:Or j'ai bienEnvoyé par g++ TableSymboles.cpp
dans TableSymboles.cpp et j'ai bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part #include "TableSymboles.h"dans TableSymboles.h.
Code : Sélectionner tout - Visualiser dans une fenêtre à part #include "Symbole.h"
Enfin le destructeur de Symbole est déclaré comme ceci dans Symbole.h(et son implémentation est vide dans le .cpp associé puisque Symbole ne créer rien dynamiquement en mémoire)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 //Destructeur ~Symbole();
Je suppose que lorsqu'on créer un vector d'objets, la stl a été faite de façon à vérifier que ces objets ont bien des constructeurs et destructeurs qui seront appelés lors de l'ajout ou de la suppression d'un objet dans le vecteur.
Mais pourquoi g++ ne trouve-t-il pas mon destructeur:
Oulà! J'espère que je n'ai pas été trop long...J'ai bien essayé de m'informer avec la doc "officielle" de la STL, mais ça ne m'a pas vraiment aidé
Merci d'avance pour votre aide![]()
Partager