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 :

redéfinition de operator/=


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 98
    Par défaut redéfinition de operator/=
    bonjour, je voudrais savoir comment redéfinir operator/=.
    Est-ce qu'il est externe, interne?
    Faut-il le mettre en 'friend' dans le .hh?
    Combien de paramètres prend la fonction?Qu'est-ce que ça retourne?
    etc...

    Je ne crois pas qu'il en soit question dans la FAQ.
    Si vous avez des liens internet aussi...

    merci pour toutes les informations que vous pourrez me donner.

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Il peut être interne avec un seul argument ou externe avec 2 arguments. le friend peut être utile mais à éviter dans le cas de l'utilisation en externe.
    Ca retourne toujours une référence sur lui-même.

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 98
    Par défaut
    Ce que tu dis s'applique à tous les opérateurs?

    le friend peut être utile mais à éviter dans le cas de l'utilisation en externe
    J'ai redéfini l'opérateur << comme ça:
    fichier.hh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    friend std::ostream& operator<<(std::ostream& o, Image& im);
    fichier.cc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    std::ostream& operator<<(std::ostream& o, Image& im) {
    // ...
    }
    C'est la seule manière que j'ai trouvé pour que ça marche. J'ai mis 'friend' alors que d'après ce que j'ai compris, mon operator<< est externe. ou alors le fait de le mettre dans le .hh fais de lui un opérateur interne.
    Je sais plus trop comment faire du coup.

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Ca marche pour tous les opérateurs. En fait, un opérateur interne, c'est comme un externe avec comme premier argument l'instance de la classe sur laquelle l'opération est appelée.

    operator<< est différent, tu ne peux pas le mettre interne de ta classe image car le premier argument est le flux et non l'image. Et si tu dois le mettre friend, c'est qu'il doit accéder à des données private ou protected. Si tu peux t'en passer, c'est mieux.

    Un opérateur interne est un opérateur déclaré dans ta classe.

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 98
    Par défaut
    Pour l'opérateur <<, si j'enlève le mot 'friend' dans le .hh ou si j'enlève la signature de la méthode dans le .hh, ça ne compile plus. J'ai laissé la même chose qu'avant dans le .cc. Je dois changer quoi d'autres?

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    ...
    Le mot-clé friend indique que tu autorise la fonction operator<< à accéder aux sections protected et private de ta classe. Cette solution est à éviter le plus souvent possible, mais si tu ne peux pas, tant pis.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [operator] Redéfinition d'un Cast
    Par Ticoche dans le forum Windows Forms
    Réponses: 15
    Dernier message: 23/01/2008, 17h10
  2. [MFC] redéfinition de BEGIN_MESSAGE_MAP
    Par SethPech dans le forum C++Builder
    Réponses: 2
    Dernier message: 10/03/2004, 13h59
  3. [JSP] thread ? Message d'avancement des operations en cours
    Par buffyann dans le forum Servlets/JSP
    Réponses: 14
    Dernier message: 18/12/2003, 11h39
  4. operation sur des alias
    Par 74160 dans le forum Requêtes
    Réponses: 4
    Dernier message: 24/11/2003, 18h19
  5. Réponses: 8
    Dernier message: 21/11/2003, 18h38

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