Interversion elements dans une map - C++ - Programmation
Marsh Posté le 16-03-2005 à 09:26:29
classe ? instances ? non instanciable ? virtuelle pure ? abstraite ? tu veux bien refaire la même chose mais avec du vocabulaire C++
Marsh Posté le 16-03-2005 à 09:35:20
Taz a écrit : classe ? instances ? non instanciable ? virtuelle pure ? abstraite ? tu veux bien refaire la même chose mais avec du vocabulaire C++ |
ta gueule, retourne dans ton trou toi
Code :
|
Marsh Posté le 16-03-2005 à 09:36:55
Taz a écrit : classe ? instances ? non instanciable ? virtuelle pure ? abstraite ? tu veux bien refaire la même chose mais avec du vocabulaire C++ |
Ca me parait pourtant clair qu'une classe non instantible est virtuelle pure / abstraite etc... Si tu as besoin de ce vocabulaire pour comprendre ce que je dis, tu peux laisser les autres repondre.
Marsh Posté le 16-03-2005 à 09:46:02
schnapsmann a écrit : ta gueule, retourne dans ton trou toi
|
Merci pour ta reponse, mais il ne s'agit pas de swapper deux element mais d'en deplacer un. Si je passe un iterator faisand a swap, ca va peter
Marsh Posté le 16-03-2005 à 09:57:16
Citation : J'ai pense faire une copie de la classe pointee, erase l'ancienne et insert la copie avec sa nouvelle clef. |
Ben je pense aussi que c'est ce qu'il faut faire, sauf pour la copie. Si tu associes bien un pointeur vers A à une clé, ben tu réutilises le même pointeur (pourquoi cloner la classe ?)
Marsh Posté le 16-03-2005 à 10:00:47
SBAM a écrit : Merci pour ta reponse, mais il ne s'agit pas de swapper deux element mais d'en deplacer un. Si je passe un iterator faisand a swap, ca va peter |
ya pas moyen.
erase + insert et c'est sur, il n'y a rien de mieux à faire avec une map pour faire ça
Marsh Posté le 16-03-2005 à 10:09:09
SBAM a écrit : Et donc faire du dynamic cast sur toutes les classes filles |
arrete la moquette là.
tu as des pointeurs dans ta map, pas besoin de recréer les instances
de + tu ne down cast pas, donc pas besoin de dynamic_cast
Marsh Posté le 16-03-2005 à 10:18:30
schnapsmann a écrit : arrete la moquette là. |
size_type erase(const key_type& k)
Associative Container
Erases the element whose key is k.
Ca delete la classe ca
Si je ne connais pas le type de ma classe, comment pourrais-je l'instancier (dans l'optique d'une copie)
Marsh Posté le 16-03-2005 à 10:52:25
SBAM a écrit : |
Heu mais ça efface le "element type" dans la map (à savoir une pair<Key, A*> dans ton cas).
En aucun cas ton A* est passé par delete.
De plus pourquoi recréer tes instances???
Marsh Posté le 16-03-2005 à 11:22:40
schnapsmann a écrit : |
Merci Je croyais qu'il lancait delete sur l'element.
Je me torturais donc l'esprit pour rien
Marsh Posté le 16-03-2005 à 08:18:57
Bonjour
Je vous explique en premier lieu la structure de mon bourdel:
- j'ai une classe (A) non instantiable avec en descendance plusieurs classes. (B, C etc...)
- une map<clef, A*>
Je veux deplacer une classe contenue dans la map (degager la classe a la position clef1 et la remettre a la position clef2).
Je n'ai pas trouver de fonction qui font ca : http://www.sgi.com/tech/stl/Map.html
J'ai pense faire une copie de la classe pointee, erase l'ancienne et insert la copie avec sa nouvelle clef.
Toutefois, comme precise au debut du post, A n'est pas instantiable.
Je cherche donc un moyen qui m'eviterait de faire des new en me servant d'un dynamic cast.(fortement porcain a mon sens)