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

Signaler
Messages postés
12
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
4 mars 2008
-
Messages postés
12
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
4 mars 2008
-
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

Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
17
Pour ajouter un élement a un vector ce n'est paspush_back ?
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
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.
Messages postés
12
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
4 mars 2008

Merci Laurent, la fonction push_back(MonObjet) a résolu mes soucis.
Well done ;)
Messages postés
12
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
4 mars 2008

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.
Messages postés
12
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
4 mars 2008

Merci luhtor.