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

Langage C++ Discussion :

surcharge operateur = avec type strucutre en retour


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 20
    Par défaut surcharge operateur = avec type strucutre en retour
    Salut à tous
    voila j'ai une structure et une classe
    dans la classe j'ai créé un objet du type de la structure

    je souhaite donc surcharger l'operateur = afin que la valeur de l'operateur
    soit intégrer à ma strcture
    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    struct tmp{
    BYTE test ;
    BYTE test2
    };
    class essai{
    private:
    public:
      essai() ;
      ~essai() ;
      tmp operator=(char* prm) ;
    mais le compilateur m'indique systématiquement qu'il ne peut pas trouver un operateur avec type char*

    si quelqu'un a une idée
    merci

  2. #2
    Membre chevronné Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Par défaut
    On ne peut pas surcharger un opérateur avec une adresse. Essaye char &*.

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Ce code fonctionne chez moi sans problème :
    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
    typedef unsigned char BYTE;
     
    struct tmp{
    BYTE test ;
    BYTE test2;
    };
    class essai{
    private:
    public:
      essai() {}
      ~essai() {}
      tmp operator=(char* prm)
      {
         return tmp();
      }
    };
     
    int main()
    {
       essai e;
       char *sz(0);
       e=sz;
       char c;
       e=&c;
       return 0;
    }
    Cependant, je pense que le choix de l'opérateur = est inapproprié. En effet, on attend 'implicitement' de celui-ci un certain comportement et en particulier :
    -> qu'il retourne un objet de la classe avec laquelle il est appelé ;
    -> qu'il modifie l'état de l'objet sur lequel il est appelé ;
    -> et non qu'il créé un nouvel objet qu'il retourne.

    Changer la sémantique d'opérateur aussi courant que l'opérateur d'affectation est dangereux et sera probablement source d'erreur. Je te conseille cette entrée de la F.A.Q : Comment écrire un opérateur d'affectation correct ?

  4. #4
    Membre chevronné Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Par défaut
    +1.
    Je suppose que dans le cas de fonction membre, this fait office de "non pointeur" alors ><.

Discussions similaires

  1. Réponses: 25
    Dernier message: 04/06/2012, 22h02
  2. [Surcharge d'opérateurs] Type de retour
    Par Nanoc dans le forum C++
    Réponses: 10
    Dernier message: 28/11/2008, 18h48
  3. surcharge operateur avec "const"
    Par Krishna dans le forum C++
    Réponses: 6
    Dernier message: 18/04/2008, 09h32
  4. Webservice avec AXIS , Eclipse et retour de type complexe
    Par Ashen-Shugar dans le forum Services Web
    Réponses: 2
    Dernier message: 26/12/2007, 21h24
  5. [Surcharge]Operateur<< avec une classe maison
    Par KeNnEdY dans le forum C++
    Réponses: 6
    Dernier message: 14/09/2005, 15h51

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