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

Résolu/Fermé
FabHacker - 25 mars 2007 à 21:21
mamiemando Messages postés 32283 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 mars 2023 - 23 déc. 2014 à 13:51
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 32283 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 mars 2023 7 572
25 mars 2007 à 22:05
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
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 Date d'inscription lundi 8 avril 2013 Statut Membre Dernière intervention 23 décembre 2014
23 déc. 2014 à 01:54
"autorisé en C" -> mais il n'y a pas de classe en C.
0
mamiemando Messages postés 32283 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 mars 2023 7 572
23 déc. 2014 à 13:51
"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