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

Résolu/Fermé
FabHacker - 25 mars 2007 à 21:21
mamiemando Messages postés 33073 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 avril 2024 - 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 !
A voir également:

1 réponse

mamiemando Messages postés 33073 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 avril 2024 7 748
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 33073 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 avril 2024 7 748
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