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 :

Quel opérateur surcharger ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 161
    Par défaut Quel opérateur surcharger ?
    Bonjour,
    je me demandais comment faire pour que cette syntaxe compile.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class A {
    // [...]
    }
     
    int main (void) {
      A a;
      a(0) = 0;
      return 0;
    }
    Je sais comment surcharger l'opérateur () mais uniquement à des fins de lecture (faire un getXXX en fait) mais dans ce cas je ne vois pas.

    Merci

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 258
    Par défaut
    Si ton operator() retourne une référence, tu peux l'utiliser pour écrire, comme ce que fait vector avec operator[] :
    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
     
    struct A
    {
        // version const, on ne fait que lire
        int operator()(unsigned int index) const
        {
            return tab[index];
        }
        // on a une référence sur une donnée membre, on peut donc la modifier
        int & operator()(unsigned int index)
        {
            return tab[index];
        }
        int tab[42];
    };
    La première version (équivalent du getXXX) est constante et renvoie soit une valeur, soit une référence constante. La seconde version (setXXX) n'est pas constante et renvoie une référence non constante.

  3. #3
    Membre expérimenté
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 161
    Par défaut
    Merci beaucoup roulious, je n'avais jamais pensé que renvoyer une référence pourrait servir à ça.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/11/2012, 10h59
  2. priorité des opérateurs surchargés
    Par Heimdall dans le forum C++
    Réponses: 8
    Dernier message: 29/03/2011, 09h32
  3. Réponses: 18
    Dernier message: 12/09/2010, 18h27
  4. Appeler un opérateur surchargé dans la classe
    Par Invité dans le forum Débuter
    Réponses: 5
    Dernier message: 24/05/2010, 01h04
  5. Réponses: 1
    Dernier message: 14/07/2008, 14h06

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