Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
927 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [VC++] map, struct et const & : pb d'insertion d'elts

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VC++] map, struct et const & : pb d'insertion d'elts

n°345752
Konar
Posté le 27-03-2003 à 17:42:10  profilanswer
 

j'ai le pb suivant : j'ai une struct avec dedans un "const HBITMAP&", et une table de hash ayant pour élément cette struct (et comme clé un UINT).
 
Le pb est que l'insertion d'un élément pose un pb chelou (erreur impossible a copier, trop longue).
 
voici en gros le code :
 

Code :
  1. typedef struct s_Button
  2. {
  3. s_Button(const HBITMAP &hBit) : State(_State::normal), hBitmap(hBit) {}
  4. s_Button(const struct s_Button& button) : State(button.State), hBitmap(button.hBitmap) {}
  5. _State State;
  6. const HBITMAP &hBitmap;
  7. } t_Button;
  8. typedef map<UINT, t_Button> BMap;
  9. BMap m_Buttons;


Et la ligne qui genere l'erreur :

Code :
  1. t_Button tmp(hBitmap);
  2. m_Buttons.insert(tmp);


 
c'est clair que c'est le 'const HBITMAP&' qui pose probleme, alors bien sur je pourrais m'en passer (par ex mettre un pointeur a la place), mais ca serait décevant.
 
en gros, si qqun pouvait me dire 'ca a pas de sens ce que t'as fait, pasque..." ou bien alors ou est l'erreur.
 
merci...


Message édité par Konar le 27-03-2003 à 17:43:03
mood
Publicité
Posté le 27-03-2003 à 17:42:10  profilanswer
 

n°345771
gloop
Posté le 27-03-2003 à 17:50:08  profilanswer
 

si tu veux utiliser insert, faut insérer une paire, genre
 

Code :
  1. m_Buttons.insert(make_pair (key, tmp));


 
ou aussi
 

Code :
  1. m_Buttons[key] = tmp;


qui fait une insertion si il n'y a pas de clé key ou le modifie sinon

n°345783
Konar
Posté le 27-03-2003 à 17:58:01  profilanswer
 

gloop a écrit :


Code :
  1. m_Buttons[key] = tmp;


qui fait une insertion si il n'y a pas de clé key ou le modifie sinon


 
ok pour le insert, je devais rater fort...
 
je connaissais l'autre solution, mais ca génére une autre erreur, qui doit provenir du meme probleme...

n°345795
gloop
Posté le 27-03-2003 à 18:05:31  profilanswer
 

Konar a écrit :


 
ok pour le insert, je devais rater fort...
 
je connaissais l'autre solution, mais ca génére une autre erreur, qui doit provenir du meme probleme...


c'est normal que l'utilisation de [] provoque une erreur, il a besoin d'un constructeur par défaut. Le comportement de l'opérateur est soit de retourner la valeur associée à la clé si elle existe, soit de créer une nouvelle entrée avec comme valeur mappée la valeur par défaut du type. Ensuite, si tu mets ca en lvalue, l'affectation sera faite. Comme t'as pas de constructeur par défaut, il gueule

n°345797
gloop
Posté le 27-03-2003 à 18:06:10  profilanswer
 

sinon, c'est quoi l'erreur qu'il te balance, parce que la  :??:  


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [VC++] map, struct et const & : pb d'insertion d'elts

 

Sujets relatifs
Insertion et utilisation de données[Access] Insertion d'une valeur par défaut
insertion de php dans script java qui fait parti d'une page phpInsertion d'un saut de ligne a chaque fin de ligne dans un textarea?
Insertion dans un formulaireInsertion d'en formulaire ...
const, reference etc , g du mal.[VBA - Word] Insertion automatique du nom de fichier
[PHP] - Insertion de balise html...insertion dans une table (access)
Plus de sujets relatifs à : [VC++] map, struct et const & : pb d'insertion d'elts


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR