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

  FORUM HardWare.fr
  Programmation
  C++

  [Résolu]pb compilation operator ++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu]pb compilation operator ++

n°1921892
amadeh
Posté le 07-09-2009 à 14:27:14  profilanswer
 

Bonjour,
J'ai écrit une classe dans laquelle j'ai redéfini l'opérateur ++ comme suit :

Code :
  1. void bit_array::operator ++ (){
  2. for(int i=0; i<dim; i++) tab[i] = 1;
  3. }


Cette méthode est censé mettre tous les bits de mon tableau à 1. La compilation sous forme de module se passe bien et j'obtiens mon fichier .o
Voilà le soucis : je fais fichier qui contient mon main() et j'écrit :

Code :
  1. bit_array a(10); // 10 c'est la taille du tableau
  2. a++;


A la compilation, voilà l'erreur qu'il me met :  
error : no operator++(int) declared for postfix ++ trying prefix operator instead
 
A bientôt,
Amadeh.

Message cité 1 fois
Message édité par amadeh le 09-09-2009 à 16:26:28
mood
Publicité
Posté le 07-09-2009 à 14:27:14  profilanswer
 

n°1921921
theshockwa​ve
I work at a firm named Koslow
Posté le 07-09-2009 à 15:14:00  profilanswer
 

amadeh a écrit :

Bonjour,
J'ai écrit une classe dans laquelle j'ai redéfini l'opérateur ++ comme suit :

Code :
  1. void bit_array::operator ++ (){
  2. for(int i=0; i<dim; i++) tab[i] = 1;
  3. }


Cette méthode est censé mettre tous les bits de mon tableau à 1. La compilation sous forme de module se passe bien et j'obtiens mon fichier .o
Voilà le soucis : je fais fichier qui contient mon main() et j'écrit :

Code :
  1. bit_array a(10); // 10 c'est la taille du tableau
  2. a++;


A la compilation, voilà l'erreur qu'il me met :  
error : no operator++(int) declared for postfix ++ trying prefix operator instead
 
A bientôt,
Amadeh.


 
tu as défini uniquement l'opérateur d'incrémentation préfixé ( ++a ) et non pas celui postfixé ( a++ )
 
pour définir le post fixé, il faut que ta fonction soit comme suit :

Code :
  1. const bit_array& bit_array::operator ++ (int){
  2.   for(int i=0; i<dim; i++) tab[i] = 1;
  3.   return *this;
  4. }


 
 
Edit : rajout du type de retour standard pour cet opérateur. Attention, trop changer la sémantique d'un opérateur n'est pas forcément une bonne chose.

Message cité 1 fois
Message édité par theshockwave le 08-09-2009 à 10:34:14

---------------
last.fm
n°1921969
amadeh
Posté le 07-09-2009 à 18:29:19  profilanswer
 

Merci pour cette réponse rapide.
Amadeh.

n°1922056
Taz
bisounours-codeur
Posté le 07-09-2009 à 23:37:28  profilanswer
 

theshockwave a écrit :


 
Edit : rajout du type de retour standard pour cet opérateur. Attention, trop changer la sémantique d'un opérateur n'est pas forcément une bonne chose.


 
C'est pas du tout le type de retour standard. Et avec ce type d'implémentation, on a tout sauf un comportement standard.

n°1922059
Taz
bisounours-codeur
Posté le 08-09-2009 à 00:36:18  profilanswer
 

Canoniquement:
 

Code :
  1. X operator++(int)
  2. {
  3.    X old(*this);
  4.    ++*this;
  5.    return old;
  6. }

n°1922087
theshockwa​ve
I work at a firm named Koslow
Posté le 08-09-2009 à 09:55:30  profilanswer
 

Taz a écrit :

Canoniquement:
 

Code :
  1. X operator++(int)
  2. {
  3.    X old(*this);
  4.    ++*this;
  5.    return old;
  6. }



 
ouais, enfin, partant de ce qu'il voulait faire, c'était difficile de reconverger vers ca.


---------------
last.fm
n°1922181
Taz
bisounours-codeur
Posté le 08-09-2009 à 13:55:25  profilanswer
 

theshockwave a écrit :


 
ouais, enfin, partant de ce qu'il voulait faire, c'était difficile de reconverger vers ca.


Pas du tout, c'est d'ailleurs pour ça que c'est une forme canonique: elle est indépendante de la sémantique de ++() mais conserve la sémantique correcte de ++(int).


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

  [Résolu]pb compilation operator ++

 

Sujets relatifs
[RESOLU]Limiter le nombre de résultats d'un fichier xml[Résolu] problème de CSS sur un menu
[Résolu] Macro excel pour tri tableau par semaineProblème nl2br ? [résolu]
[Résolu] Gestion des plantages[XML] probleme de compilation dans libxml2
Produit matriciel avec Mysql [Résolu][Résolu] Fuite mémoire, que libérer ?
[RESOLU]Arrondi à partir d'une chaine de caractère[résolu][Velocity & Hudson] Templates non copiés dans le classpath
Plus de sujets relatifs à : [Résolu]pb compilation operator ++


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