Bonjour,
voilà, je gére quelques vector sur des pointeurs d'objet de classe.
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;
ItemBloc Zone et Div sont des classes et toute trois dérivent de baseitem.
Bref...

a un moment donnée j'aimerais bien vider ces tableaux.
A la base j'ai pondu ceci :
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();
(je vide et j'appelle le destructeur de l'objet par la même occasion)
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é)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
typedef std::vector<baseitem*> vItems;
voila donc mon vItems est un vecteur de pointeur sur baseitem.

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 :
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...
}
et voici comment je l'appelle
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
PurgevItem(&vItemBloc);
j'en suis même pas encore a mettre mon code dans ma fonction que dejà ca ne compile pas
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.