CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

probleme avec opération sur iterateur

m-2
m-2
Niveau 10
11 octobre 2006 à 18:41:37

je suis en train de faire un petit programme et lorsque je fais :

  1. include <list>

list <ClEntreprise>::iterator it= m_entreprises.begin();

while (it != m_entreprises.end())
++it

ca me donne deux erreur:

´initializing´ : cannot convert from ´std::list<_Ty>::_Iterator<_Secure_validation>´ to ´std::list<_Ty>::_Iterator<_Secure_validation>´

binary ´!=´ : no operator found which takes a right-hand operand of type ´std::list<_Ty>::_Iterator<_Secure_validation>´ (or there is no acceptable conversion)

bon je sais que la boucle ne sert à rien pour l´instant, j´ai enlever l´autre condition pour que le code soit plus clair, mais le probleme reste le meme, dès que je fais une opération sur un iterateur (=, ==, != ) ca plante... des suggestions?

dnob700
dnob700
Niveau 10
11 octobre 2006 à 18:55:41

typiquement, l´erreur ne vient pas du code que tu donne mais d´une erreur de syntaxe débile quelque part ailleurs (sauf s´il y a un truc que je n´ai pas vu).

Donc il faudrait peut-être que tu donne un morceau de code un peu plus grand, quitte à lemettre là :
http://rafb.net/paste/ pour la lisibilité.

m-2
m-2
Niveau 10
11 octobre 2006 à 19:06:01

quel genre de portion de code faudrait-il mettre? car j´ai 4 classe, 1 utilitaires et le main séparé dans 7 fichiers différent sur environ 600 lignes...

godrik
godrik
Niveau 30
11 octobre 2006 à 19:26:22

´initializing´ : cannot convert from ´std::list<_Ty>::_Iterator<_Secure_validation>´ to ´std::list<_Ty>::_Iterator<_Secure_validation>´

... c´est le meme types les deux, tu es sur de ne pas avoir fait une faute en recopiant (ou en faisant ton c/c ?

m-2
m-2
Niveau 10
11 octobre 2006 à 19:35:49

hehe non godrik, c´est bien la le probleme... c´est bien ca le msg d´erreur et je comprend pas pourquoi il peut pas comparer 2 valeurs du meme type..

comme l´as dit dnob, le probleme doit venir d´ailleur...mais comment trouver?

godrik
godrik
Niveau 30
11 octobre 2006 à 19:36:33

met du code en commentaire et recompile

m-2
m-2
Niveau 10
11 octobre 2006 à 20:00:40

c´est clair que si j´enleve la portion avec les iterateur, tout marche.. mais sans les iterateurs, je peux rien faire d´autre...

dnob700
dnob700
Niveau 10
11 octobre 2006 à 22:21:54

copie juste l´intégralité de la fonction concerné ainsi que tout ce qui est défini au niveau fichier pour le fichier qui contient cette fonction (les déclaration globale).

m-2
m-2
Niveau 10
11 octobre 2006 à 22:37:15

c´est bon j´ai résolu le bug.. ma list est une liste de pointeur, donc je devais déclarer les itérateur avec le pointeur... j´avais deja esseyer mais ca n´avais pas marché (probablement à cause d´un autre bug que j´avais réglé depuis ce temps)

bon, ca m´amene quand meme a une autre question.. j´ai une list de pointeur qui pointe sur un objet qui contient 2 string et une list de pointeur qui pointe sur un objet d´une autre classe... m´enfin, voici ma question :

je voudrais pouvoir afficher seulement les 2 string de la classe sans faire afficher l´autre list de pointeur.. je sais plus comment faire et mes neuronnes sont tous au neutre..

disons quand je fais: cout << *it;
ben ca marche pas.. en faite ca écrit une adresse hexa..

m-2
m-2
Niveau 10
11 octobre 2006 à 22:40:26

plus je relis mon message, plus je me dis que c´est pas trop clair...

gener vous pas pour des questions sur la clarté... :)

dnob700
dnob700
Niveau 10
11 octobre 2006 à 23:15:57

tu peut faire :

cout << it->string1 << endl << it->string2;

si tes deux string s´appelle string1 et string2.

enfin, je crois que c´est ça, mais je ne suis pas sûr d´avoir compris ton problème ...

kufa
kufa
Niveau 9
11 octobre 2006 à 23:23:27

un truc comme ca:
http://rafb.net/paste/results/2jPf1547.html

kufa
kufa
Niveau 9
11 octobre 2006 à 23:23:57

ha dnoob a poste pendant que je faisais l exemple, dsle pour le double poste.

Fvirtman
Fvirtman
Niveau 10
12 octobre 2006 à 11:32:29

Je tiens a souligner que les exemples de Dnob et de Kufa sont différent :

Dnob, tu as oublié un déréférencement.

Si it est un itérateur, alors *it est l´élément.
Pour l´exemple de m-2, l´élément est un pointeur.
donc si tu fais :

(*it).string1 (<=> it->string1)
--> ça ne va pas.
Il faut faire :

(*it)->string1

Comme fait Kufa (en créant contenu = *it, puis contenu->string1.)

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment