Hello,
j'ai écrit plusieurs classes mais dans l'une d'elles, ça me donne des erreurs que je n'arrive pas à résoudre.
Merci
Version imprimable
Hello,
j'ai écrit plusieurs classes mais dans l'une d'elles, ça me donne des erreurs que je n'arrive pas à résoudre.
Merci
Salut,
Les erreurs, il est toujours préférable de les gérer dans l'ordre dans laquelle elles apparaissent...
Ne serait-ce parce que l'on assiste souvent à une cascade d'erreurs découlant toutes d'une seule et meme erreur à la base :P
Dans ton cas, c'est le fait que tu essaye de mettre une définition là où seule une déclaration est autorisée:
Le code
fait, normalement, deux choses:Code:vector<Personne> listePersonnes(0);
- Déclarer listePersonnes comme étant un vecteur de personne
- réserver(0) éléments de types personnes "defaut construites" dans le vecteur
Or, dans une classe, les membre doivent etre déclarés, mais la définition elle-même doit etre effectuée, comme toujours, au sein d'une fonction (souvent le constructeur, parfois au sein d'un accesseur quelconque)
Supprimes tout simplement la parenthese et le 0 qu'elle contient pour que la déclaration du membre devienne
et tes problèmes seront résolus:Code:vector<Personne> listePersonnes;
- listePersonnes sera correctement déclaré ==>
- chaque fois que tu voudra accéder à ce membre, le compialteur saura de quoi tu parles ;)
Et t'as encore oublié un Vacances:: devant augmenter_taille :roll:
De plus, mettre un using namespace global dans un fichier d'en-tête est une mauvaise pratique, fortement déconseillée.
est-ce que tu as vraiment besoin d'avoir une taille? Un des intérêt du vector est qu'il est extensible.
Il faut que tu fasses un vector de pointeurs sur Personne du coup.Citation:
ainsi que pour mettre des Objets Vacancier dans cette liste.
Vacancier est une classe qui hérite de Personne
Ca implique après d'utiliser des new et de ne pas oublier les delete si c'est la classe qui contient le vecteur qui est responsable de la destruction des personnes.Code:
1
2 std::vector< Personne* > personnes;
Dans l'idéal tu utiliserais boost et des smart pointers.
Ben, il faut surtout voir comment tu prévois de gérer ce vecteur...
Soit tu te dis "je ne sais jamais combien de vacancier il va falloir que je gere en meme temps", et, dans ce cas, tu ajoute chaque vacancier par un push_back(vacancier)
Soit tu sais "dés le départ" que tu auras un total de (n) vacanciers, et tu peux demander de redimentionner ton vecteur (par un listePersonnes.resize())
Mais il faut que tu restes logique avec toi meme:
La suite d'instructions du genre de
te fait arriver àCode:
1
2
3
4
5
6 listePersonnes.resize(100); listePersonnes.push_back(vacancier); listePersonnes.push_back(vacancier); listePersonnes.push_back(vacancier); listePersonnes.push_back(vacancier);
et donc à un total de ... 104 vacanciers...
- 100 vacanciers "défaut construit"
- 4 vacancier "définis" rajoutés
L'avantage des conteneurs de la STL, c'est que, justement, tu n'a pas besoin de t'occuper toi meme de la gestion de la mémoire en suffisance pour maintenir le nombre correct d'éléments...
L'inconvéniant, c'est que tu dois faire appel au fonctions membres existantes pour placer un élément dans le conteneur...
Tu devrais vraiment prendre la peine de relire ton code... La moitié des tes erreurs ne sont que des étourderies.Code:public :