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

Résolu
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 !
Configuration: Windows XP
Internet Explorer 7.0

1 réponse

  1. Modérateur
    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
    1. Ok merci c'est juste cela que je ne suis pas arrivé à trouver.
      Je pense pouvoir résoudre mon problème maintenant !
      Merci.
      ++
      0
    2. "autorisé en C" -> mais il n'y a pas de classe en C.
      0
    3. Modérateur
      "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