Tableau dynamique vector
Fermé
soheib
-
31 juil. 2019 à 20:45
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 9 sept. 2019 à 20:43
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 9 sept. 2019 à 20:43
A voir également:
- Arduino tableau dynamique
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Liste déroulante dynamique excel - Guide
- Le nom du champ de tableau croisé dynamique n'est pas valide - Forum Excel
2 réponses
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
31 juil. 2019 à 23:03
31 juil. 2019 à 23:03
Bonjour,
la ligne
la ligne
Ingredient* autre( const Produit &p,double quantite);déclare une fonction
autre()qui reçoit 2 paramètres et retourne un pointeur. Je ne pense pas que c'est ce que tu voulais faire.
contenuest un tableau de pointeur sur des ingrédients, donc on doit lui ajouter un pointeur qui doit pointer un
Ingredientqui doit se trouver quelque part. Or ici le seul moyen serait d'utiliser
newqui est une abomination. Alors erreur dans la définition de
contenu, erreur dans les paramètres de la fonction
ajouter()ou erreur d'un prof qui recommanderais d'utiliser
new, je ne sais pas vers quoi t'orienter.
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
9 sept. 2019 à 20:43
9 sept. 2019 à 20:43
void ajouter(const Produit& p, double quantite){ Ingredient autre(p, quantite); contenu.push_back(<gras>&</gras>autre); }
Si j'ai bien compris ce que tu cherches à faire. Par contre, j'ai un doute sur la portée de la variable "autre". Tu crées une variable propre à la fonction et tu assignes le pointeur à un vector. Il me semble qu'à la fin de la fonction, la variable est détruite et la mémoire libérée, ton pointeur pointe sur du vide et bonjour les erreurs de segmentation. Stocker des pointeurs, c'est bien pour éviter de dupliquer les objets, mais encore faut il que les dit objets soient quelque part.
Le C++, c'est bien car on gère soit même la mémoire, mais c'est contraignant, il faut réfléchir ce qu'on veux faire. Dans ton cas, tu fait un vector de pointeur, ça sou entend que les objets sont stockées ailleurs. OU que tu fais des new pour les créer MAIS a ce moment là, il ne faut pas oublier de les détruire à la fin avec un delete.
Soit tu considères que le vector est là pour conserver les objets et à ce moment là, c'est vector<Ingredient>, sans pointeur.
Les deux approches se défendent, en fonction de ce que tu veux faire et de comment tu conceptualises ton programme.