Ajouter un Objet à un vecteur.

Résolu
Rom1PL Messages postés 12 Date d'inscription vendredi 30 novembre 2007 Statut Membre Dernière intervention 4 mars 2008 - 26 févr. 2008 à 12:28
Rom1PL Messages postés 12 Date d'inscription vendredi 30 novembre 2007 Statut Membre Dernière intervention 4 mars 2008 - 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.

5 réponses

cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
26 févr. 2008 à 13:50
Pour ajouter un élement a un vector ce n'est paspush_back ?
3
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
26 févr. 2008 à 23:11
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.
3
Rom1PL Messages postés 12 Date d'inscription vendredi 30 novembre 2007 Statut Membre Dernière intervention 4 mars 2008
26 févr. 2008 à 13:56
Merci Laurent, la fonction push_back(MonObjet) a résolu mes soucis.
Well done ;)
0
Rom1PL Messages postés 12 Date d'inscription vendredi 30 novembre 2007 Statut Membre Dernière intervention 4 mars 2008
26 févr. 2008 à 19:31
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Rom1PL Messages postés 12 Date d'inscription vendredi 30 novembre 2007 Statut Membre Dernière intervention 4 mars 2008
29 févr. 2008 à 10:01
Merci luhtor.
0
Rejoignez-nous