Bonjour,
voilà, je gére quelques vector sur des pointeurs d'objet de classe.
ItemBloc Zone et Div sont des classes et toute trois dérivent de baseitem.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 std::vector<ItemBloc*> vItemBloc; std::vector<ItemZone*> vItemZone; std::vector<ItemDiv*> vItemDiv;
Bref...
a un moment donnée j'aimerais bien vider ces tableaux.
A la base j'ai pondu ceci :
(je vide et j'appelle le destructeur de l'objet par la même occasion)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Uint16 s=vItemBloc.size(); for(Uint16 i=0;i<s;i++) delete vItemBloc[i]; vItemBloc.clear();
et puis je me suis dis, je vais faire une fonction qui va me faire celà, je n'aurait plus qu'a appeller ma fonction en lui passant mon vecteur.
J'ai commencé par definir un type (pour la lisibilité)
voila donc mon vItems est un vecteur de pointeur sur baseitem.
Code : Sélectionner tout - Visualiser dans une fenêtre à part typedef std::vector<baseitem*> vItems;
et puis je em susi dit, je ne vais pas passer tout le vecteur en parametre, juste un pointeur vers celui ci...
voici ma fonction :
et voici comment je l'appelle
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void level::PurgevItem(vItems* v) { // pour l'instant elle ne fait rien... }
j'en suis même pas encore a mettre mon code dans ma fonction que dejà ca ne compile pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 PurgevItem(&vItemBloc);![]()
voici mon message :
error C2664: 'PurgevItem' : cannot convert parameter 1 from 'class std::vector<class ItemBloc *,class std::allocator<class ItemBloc *> > *' to 'class std::vector<class baseitem *,class std::allocator<class baseitem *> > *'
![]()
![]()
et bien... c'est costaud ca !
de toute evidence il n'aime pas que je lui parle de la classe de base hein...
y a t'il une solution ? il n'y a pas moyen de faire ce genre d'operation sans être trop précis au niveau des elements du vecteur ???
D'avance Merci.
Partager