[C++] Surcharge d'opérateur de conv. de type.

Résolu
FabHacker -  
mamiemando Messages postés 34184 Statut Modérateur -
Bonjour,

J'ai besoin d'un peu d'aide pour surcharger des opérateur sun peu spéciaux, les opérateur de conversion de type: les opérateurs int, float, ect...

Par exemple je voudrais donner un sens à:

int n;
MaClasse c;

n = (int)c; //Conversion explicite de type avec l'opérateur int


Merci de votre aide !

1 réponse

mamiemando Messages postés 34184 Statut Modérateur 7 888
 
cf exemple :
http://tbrouard.univ-tours.fr/t/article.php3?id_article=65
class CFract {
   int num;
   int den;

   public :
       // définition des constructeurs
       // définition des cast
       operator double() {
           return (double)num /(double)den;
       }
};

void main() {
   CFract a(5,6);
   double i = double(a); // autorisé en C++
   double j = (double)a; // autorisé en C et en C++
}

Bonne chance
12
FabHacker
 
Ok merci c'est juste cela que je ne suis pas arrivé à trouver.
Je pense pouvoir résoudre mon problème maintenant !
Merci.
++
0
glcraft Messages postés 1 Statut Membre
 
"autorisé en C" -> mais il n'y a pas de classe en C.
0
mamiemando Messages postés 34184 Statut Modérateur 7 888
 
"autorisé en C" -> mais il n'y a pas de classe en C.

Dans ce message le commentaire que tu relève signifique que la ligne 16 est syntaxiquement correcte.

Ce n'est pas un appel de classe, c'est un cast (et même un static cast pour être exact). A noter que d'ailleurs, en C++ les casts se font plutôt au travers des opérateurs suivants :
http://openclassrooms.com/courses/c-les-conversions-de-types
0