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

  FORUM HardWare.fr
  Programmation
  C++

  Problème avec les Vectors ( return ((vector<_Key>::iterator)NULL;)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème avec les Vectors ( return ((vector<_Key>::iterator)NULL;)

n°1288977
Lereveur
Profitons de la vie.
Posté le 21-01-2006 à 16:21:24  profilanswer
 

(Re) bonjour,
 
Étant en période de découverte des vectors j’ai encore quelques problèmes :
 
Une de mes fonction retourne un iterator :  
 

Code :
  1. vector<_Key>::iterator _Sprite_Data::OnKey(float time)
  2. {
  3. vector<_Key>::iterator it = this->KeyUnder(time);
  4. if(it->Time==time)
  5.  return it;
  6. else
  7.  return NULL;
  8. }


 
Mais voila le problème que je ne sais pas résoudre :
Je voudrais qu’en cas d’erreur la fonction me retourne un NULL que je pourrais ensuite comparer comme un pointeur.
Du type :
 

Code :
  1. vector<_Key>::iterator itKey =  Sprite_Data.OnKey(time);
  2. if(itKey ==NULL)
  3. {
  4. …
  5. }


 
 
Mais VS8 me retourne une erreur (alors que VS6 ne posais pas de problème) :  
 

Code :
  1. sprite.cpp(144) : error C2664: 'std::_Vector_iterator<_Ty,_Alloc>::_Vector_iterator(const std::_Vector_iterator<_Ty,_Alloc> & )' : cannot convert parameter 1 from 'int' to 'const std::_Vector_iterator<_Ty,_Alloc> &'
  2.         with
  3.         [
  4.             _Ty=_Key,
  5.             _Alloc=std::allocator<_Key>
  6.         ]
  7.         Reason: cannot convert from 'int' to 'const std::_Vector_iterator<_Ty,_Alloc>'
  8.         with
  9.         [
  10.             _Ty=_Key,
  11.             _Alloc=std::allocator<_Key>
  12.         ]
  13.         No constructor could take the source type, or constructor overload resolution was ambiguous


 
Je ne sais vraiment pas comment faire donc si quelqu’un s’y connais un peu en vectors :), j’ apprecierais beaucoup son aide.
 
Merci d’avance.

mood
Publicité
Posté le 21-01-2006 à 16:21:24  profilanswer
 

n°1289041
Taz
bisounours-codeur
Posté le 21-01-2006 à 18:11:28  profilanswer
 

un iterator c'est pas un pointeur. si tu veux indiquer rien, tu retournes v.end()

n°1289259
++fab
victime du syndrome IH
Posté le 22-01-2006 à 01:51:02  profilanswer
 

Tu te ramollies :o, t'as même pas pisser dans les tripes du PO parce qu'il avait utilisé un nom réservé :o :D
 
( ^_[_A-Z] au moins est réservé à l'implémentation )
 
le type vector<>::iterator est défini par l'implémentation. VS6, malgré que ce soit une bouze finie, a tout à fait le droit de faire en sorte que l'iterator soit en réalité un pointeur.
 
Sinon, je ne sais pas comment tu vas utiliser ton iterateur ainsi que ton conteneur sous jaçant, mais méfies toi des conditions d'invalidation de l'iterateur.

Message cité 1 fois
Message édité par ++fab le 22-01-2006 à 10:36:16
n°1289349
Taz
bisounours-codeur
Posté le 22-01-2006 à 11:17:16  profilanswer
 

++fab a écrit :

Tu te ramollies :o, t'as même pas pisser dans les tripes du PO parce qu'il avait utilisé un nom réservé :o :D
 
( ^_[_A-Z] au moins est réservé à l'implémentation )


je laisse tomber ça et les include guards, y a vraiment des gens trop stupides qui utiliseront toujours STACK_H, qui foutront des _ dans tous les sens et préfixeront tout en C ou T parce que MS et Borland le font ...

n°1289370
++fab
victime du syndrome IH
Posté le 22-01-2006 à 12:14:18  profilanswer
 

Taz a écrit :

je laisse tomber ça et les include guards, y a vraiment des gens trop stupides qui utiliseront toujours STACK_H, qui foutront des _ dans tous les sens et préfixeront tout en C ou T parce que MS et Borland le font ...


 
pour les IG, c'est stupide d'en faire des courts et commun, mais j'en ai franchement marre d'avoir à gérer un nom unique. Faut dire que j'ai toujours pas pris la peine de m'écrire une fonction e-lisp pour me gérer ça dans emacs  [:petrus75]  
Bref, les IG, je trouve ça de plus en plus préhistoriques ... Vivement les namespace >> et al.

n°1289545
Lereveur
Profitons de la vie.
Posté le 22-01-2006 à 17:42:55  profilanswer
 

e-lisp, IG, STACK_H C quoi tout ça ???
Et de plus quels est le problème avec mon nom de structure ???
_Sprite_Data
Perso je met toujour un _ devant une stucture...

n°1289575
skelter
Posté le 22-01-2006 à 18:09:01  profilanswer
 

les noms commencant par '_' suivi d'une majuscule ou commencant par '__' sont réservés à l'implémenation, tu peux mettre un '_' devant mais suivie d'une minuscule

n°1289577
++fab
victime du syndrome IH
Posté le 22-01-2006 à 18:09:28  profilanswer
 

Lereveur a écrit :

e-lisp, IG, STACK_H C quoi tout ça ???


e-lisp : un truc d'emacsien, IG : include guards, STACK_H est l'exemple d'un include guard trop souvent employé et pas assez unique.

Lereveur a écrit :

Et de plus quels est le problème avec mon nom de structure ???
_Sprite_Data
Perso je met toujour un _ devant une stucture...


( ^_[_A-Z] au moins est réservé à l'implémentation )

n°1289581
++fab
victime du syndrome IH
Posté le 22-01-2006 à 18:18:00  profilanswer
 

skelter a écrit :

tu peux mettre un '_' devant mais suivie d'une minuscule


Si le nom n'est pas dans la scope globale.
 
Je ne comprend pas l'intérêt qu'il y a à rendre un nom dégueulasse en préfixant par '_'. Si on a réservé à l'implémentation ces noms, c'est qu'il a été jugé qu'ils étaient les plus laid, et que les utilisateurs n'en auraient pas crucialement besoin.

n°1289582
++fab
victime du syndrome IH
Posté le 22-01-2006 à 18:20:28  profilanswer
 

skelter a écrit :

les noms commencant par '_' suivi d'une majuscule ou commencant par contenant  '__' sont réservés à l'implémenation


mood
Publicité
Posté le 22-01-2006 à 18:20:28  profilanswer
 

n°1289589
skelter
Posté le 22-01-2006 à 18:29:23  profilanswer
 

je comprends pas, je traduis ce que tu ecris (^_[_A-Z]), ta qu'a le dire si en réalité c'est (^_.*|.*__.*)

n°1289596
++fab
victime du syndrome IH
Posté le 22-01-2006 à 18:38:22  profilanswer
 

j'ai dit "^_[_A-Z] au moins" pour ne pas avoir a me prendre la tete avec une regexp compliquée :)

n°1289836
slash33
Posté le 23-01-2006 à 08:38:44  profilanswer
 

++fab a écrit :

j'ai dit "^_[_A-Z] au moins" pour ne pas avoir a me prendre la tete avec une regexp compliquée :)


Et pour trouver les recommandations détaillées sur ce point, il faut aller où ?

n°1290454
++fab
victime du syndrome IH
Posté le 23-01-2006 à 19:53:54  profilanswer
 

slash33 a écrit :

Et pour trouver les recommandations détaillées sur ce point, il faut aller où ?


Dans la norme, rubrique 17.4.3.1 et suivantes.
Sinon, il y a un gotw qui en parle, je ne sais plus lequel.


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

  Problème avec les Vectors ( return ((vector<_Key>::iterator)NULL;)

 

Sujets relatifs
Qui est le plus rapide : SDT :Vector ou les tableau[] ?problème de formulaire
[Assembleur] Problème avec la multiplicationProbleme SQL parait il faisable...
Probleme autorun pour cdrom[ASP.NET] Problème avec une connection à la base de données
Problème Infopath et JScriptprobleme ordre des fichiers dans une galerie
Probleme ALTER TABLE 
Plus de sujets relatifs à : Problème avec les Vectors ( return ((vector<_Key>::iterator)NULL;)


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