Rom1PL
Messages postés12Date d'inscriptionvendredi 30 novembre 2007StatutMembreDernière intervention 4 mars 2008
-
26 févr. 2008 à 12:28
Rom1PL
Messages postés12Date d'inscriptionvendredi 30 novembre 2007StatutMembreDerniè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.
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 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.
Rom1PL
Messages postés12Date d'inscriptionvendredi 30 novembre 2007StatutMembreDerniè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.
Vous n’avez pas trouvé la réponse que vous recherchez ?