Ajouter un Objet à un vecteur. [Résolu]

Rom1PL 12 Messages postés vendredi 30 novembre 2007Date d'inscription 4 mars 2008 Dernière intervention - 26 févr. 2008 à 12:28 - Dernière réponse : Rom1PL 12 Messages postés vendredi 30 novembre 2007Date d'inscription 4 mars 2008 Dernière intervention
- 29 févr. 2008 à 10:01
Bonjour,
Je débute en POO et plus particulièrement en C++.
Voici en fait mon problème :
      J'ai une classe ProductList qui a pour seul attribut une vecteur de Produits.
     
Ma classe Produit (class Product) est une classe abtraite avec deux
classes qui en héritent : FoodProduct et TechnicalProduct.
      Donc mon vecteur de Produits contient à la fois des FoodProducts et des TechnicalProducts.
 
Dans
une des fonctions de ma classe ProductList je cré des objets pour les
ajouter un à un à mon vecteur de Produits mais le compilo me donne
cette erreur :
 " 'addElement' is not a member of 'vector >' "

Voici mon code :

//Déclaration de tous les attributs de Product
...
//
if ...//test si l'objet est un FoodProduct ou un TechnicalProduct
{
    //déclaration des attributs supplémentaires de FoodProduct
    ...
    //
    FoodProduct temp;
    temp.SetAttributes(// tous mes attributs passés en paramètre);
    Products.addElement(temp); //Products est mon vecteur de Produit, c'est le seul attribut de ProductList.
}
else
{
    //déclaration des attributs supplémentaires de TechnicalProduct
    ...
    //
    TechnicalProduct temp;
    temp.SetAttributes(// tous mes attributs passés en paramètre);
    Products.addElement(temp);
}

Est-ce que quelqu'un voit une solution ?
N'hésitez pas à faire signe si j'ai omis de donner certains éléments.
Merci d'avance.
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
cs_laurent1024 987 Messages postés mardi 31 mai 2005Date d'inscription 30 août 2012 Dernière intervention - 26 févr. 2008 à 13:50
3
Merci
Pour ajouter un élement a un vector ce n'est paspush_back ?

Merci cs_laurent1024 3

codes-sources a aidé 82 internautes ce mois-ci

Commenter la réponse de cs_laurent1024
Meilleure réponse
luhtor 2023 Messages postés mardi 24 septembre 2002Date d'inscription 28 juillet 2008 Dernière intervention - 26 févr. 2008 à 23:11
3
Merci
Stokes des pointeurs dans ton objet, pas les objets eux meme. Un vector stocke des objets dont il connait la taille et uniquement ! donc évidemment, pour stocker des objets par leur classe mère, il faut passer par des pointeurs qui ont toujours une taille fixe.

Merci luhtor 3

codes-sources a aidé 82 internautes ce mois-ci

Commenter la réponse de luhtor
Rom1PL 12 Messages postés vendredi 30 novembre 2007Date d'inscription 4 mars 2008 Dernière intervention - 26 févr. 2008 à 13:56
0
Merci
Merci Laurent, la fonction push_back(MonObjet) a résolu mes soucis.
Well done ;)
Commenter la réponse de Rom1PL
Rom1PL 12 Messages postés vendredi 30 novembre 2007Date d'inscription 4 mars 2008 Dernière intervention - 26 févr. 2008 à 19:31
0
Merci
Je reviens à la charge en posant une autre question.
Est-il possible de déclarer et utiliser un vecteur d'objets abstraits ?
Car toujours avec les 4 classes de mon premiers message (ProductList, Product, FoodProduct et TechnicalProduct), mon compilateur me dit "Cannot create instance of abstract class 'Product' " à la compilation de la classe ProductList.

Pour rappel j'ai une classe ProductList qui est constitué du seul élément Products qui est un vecteur de Product (vector Products;).
Ensuite ma classe Product est une classe abstraite (avec 2 méthodes virtuelles pure).
Enfin les deux classes héritants de Product sont FoodProduct et TechnicalProduct.

Merci beaucoup d'avance pour votre aide.
Commenter la réponse de Rom1PL
Rom1PL 12 Messages postés vendredi 30 novembre 2007Date d'inscription 4 mars 2008 Dernière intervention - 29 févr. 2008 à 10:01
0
Merci
Merci luhtor.
Commenter la réponse de Rom1PL

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.