IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Opérateur pour le type Point


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 101
    Par défaut Opérateur pour le type Point
    Bonjour,

    Voila je voudrais créer l'opérateur - pour le type Point
    J'ai donc écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public static Point operator -(Point a, Point b)
    {
          //mon code
    }
    Mais j'ai l'erreur: Un des paramètres d'un opérateur binaire doit être le type conteneur

    Comment je peux faire du cout? J'ai essayé dans un classe static mais rien à faire!

    Merci d'avance

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    La surcharge d'un opérateur pour une classe ne peut se faire que au sein de la classe manipulant l'objet.

    Il n'y a pas de solution à ta question, sauf à dériver la classe Point.

    EDIT : c'est un type value, faut que j'arrête le Ricard


    (et, si il n'y a pas de solution, c'est qu'il n'y a pas de problème - devise Shadock )

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    A mon avis, il faut créer une classe qui dérive de Point et implémenter l'opérateur - dans cette classe.

    Tu ne peux pas substituer un opérateur d'une classe qui existe déjà.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 101
    Par défaut
    Point est une classe sealed

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    C'est surtout une structure

    Par contre, tu peux créer une structure du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
     
    public struct MyPoint {
     
       public static const Empty = null;
     
       private Point point;
     
       public bool IsEmpty { get { return point.IsEmpty; } }
     
       public int X { get { return point.X; } set { point.X = value; } }
     
       public int Y { get { return point.Y; } set { point.Y = value; } }
     
       public MyPoint(int x, int y) {
          point = new Point(x, y);
       }
     
       // [... etc ... méthodes de Point qui t'intéresse]
     
       public static MyPoint operator - (MyPoint p1, MyPoint p2) {
          return new MyPoint(p1.X - p2.X, p1.Y - p1.Y);
       }
     
       internal Point Point { get { return point; } }
     
       public static implicit operator Point(MyPoint p) {
          return p.Point;
       }
     
    }
    Je suis pas sûr du pattern ... décoration ?

    Après, je vois pas trop l'utilité lol.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 101
    Par défaut
    Oui j'avais bien pensé à refaire une classe Point!

    Je crois que c'est le seul choix que j'ai.

    Merci

  7. #7
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    J'ai rajouté un opérateur de conversion implicite vers un Point. Pas sûr que ça marche sur les structures par contre

  8. #8
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Bon, et bien tant pis pour l'apparence du code : tu vas créer une méthode static.

Discussions similaires

  1. Réponses: 8
    Dernier message: 01/02/2012, 16h24
  2. Equivalent à IN pour des données de type point?
    Par Mazike dans le forum PostgreSQL
    Réponses: 0
    Dernier message: 26/09/2010, 10h28
  3. Réponses: 3
    Dernier message: 02/03/2010, 08h16
  4. [Reflection] Opérateurs pour un type donné
    Par Mose dans le forum Framework .NET
    Réponses: 4
    Dernier message: 04/12/2006, 17h56
  5. Aperçu pour mes types de fichiers
    Par Aurelien.Regat-Barrel dans le forum Windows
    Réponses: 3
    Dernier message: 27/09/2004, 18h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo