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 :

Méthode avec argument objet de la même classe


Sujet :

C++

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2002
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Méthode avec argument objet de la même classe
    Salut,

    Je voudrais savoir s'il était possible d'avoir une classe où on définit une méthode qui a comme argument un objet de cette même classe.

    Un exemple ne serait pas de refus

    Merci d'avance.

  2. #2
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Biensur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class A
    {
      void func(A &Obj);
      private :
      int x;
    }
    void A::func ( A &Obj)
    {
      Obj.x = 2*x;
    }
    Et par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    A Tst;
    A Truc;
    Truc.func(tst);

    [Balises CODE rajoutées par Loulou24, merci d'y penser à l'avenir]
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2002
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup

  4. #4
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Un bon exemple pour cette question est l'opérateur de recopie (très utile, notamment pour utiliser certains templates):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class A
    {
    public:
       A* A(A &source);
     
    private:
       int unEntier;
    }
     
    A* A(A &source)
    {
       unEntier = source.unEntier;
       return this; //utilile pour les trucs du style A* a = (A*) b = (A*) c ...
    }
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    A* A(A &source)
    {
       unEntier = source.unEntier;
       return this; //utilile pour les trucs du style A* a = (A*) b = (A*) c ...
    }
    1/ Un constructeur par copie prend en général une référence constante

    2/ Un constructeur, par copie ou non, ne renvoie rien.

    3/ "A* a = (A*) b = (A*) c" -> ça compilera peut-être, mais ça ne servira à rien. Et ça n'utilisera en aucun cas une éventuelle valeur de retour du constructeur par copie.

  6. #6
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    euh oui j'ai fait un gros mix entre l'operateur = et le constructeur de recopie.
    Je copierais 100 fois "je ne posterais plus le dimanche!"
    (normalement, je ne devrais plus poster le lundi matin non plus... )
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

Discussions similaires

  1. Réponses: 5
    Dernier message: 02/01/2015, 13h23
  2. [2.x] Objet avec une propriété étant un objet de la même classe
    Par magicbisous-nours dans le forum Symfony
    Réponses: 0
    Dernier message: 21/08/2012, 09h56
  3. Méthode avec argument initialisé par défaut
    Par rtg57 dans le forum Langage
    Réponses: 3
    Dernier message: 15/02/2010, 16h23
  4. Problème pour créer des objets de la même classe
    Par Dietzer dans le forum Code::Blocks
    Réponses: 1
    Dernier message: 25/06/2009, 17h01
  5. méthode avec valeur objet en parametre en java
    Par ché dans le forum Langage
    Réponses: 6
    Dernier message: 16/11/2006, 09h52

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