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 :

Une question sur les classes


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 10
    Points : 11
    Points
    11
    Par défaut Une question sur les classes
    Bonjour,

    voila je viens vers vous car je commence à programmer en C++ et j'aurai besoin de votre aide. Il se trouve que j'ai créer une classe avec deux méthodes. Une méthode me retourne un résultat or j'aimerai que la deuxième méthode prenne en argument le résultat de la première méthode ? Est-il possible de faire cela ? Et si oui comment ?

    J'ai entendu dire qu'on pouvait utiliser pour cela l'héritage également enfin je crois je ne suis pas sur...

    Si quelqu’un aurait une idée pour faire ceci je le remercie infiniment c'est vraiment quelque chose que j'aimerai savoir comment faire

    Un grand merci à vous

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Salut,

    ben à vrai dire y'a aucune magie, ta seconde méthode doit prendre un argument et tu fournis le résultat de la première méthode en paramètre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <iostream>
    class Useless {
    public:
     int get() const { return 42; }
     void print(int i) { std::cout<<i; }
    };
    int main()
    {
     Useless u;
     u.print(u.get());
    }
    Tu n'a aucunement besoin de classe, héritage ou quoi que ce soit.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mai 2014
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 227
    Points : 162
    Points
    162
    Par défaut
    Pas besoin de classes ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    float data() const
    {
         return VALEUR;
    }
     
    void say( auto& value )
    {
         std::cout << value;
    }
     
    say(data());
    Encore mieux -> utiliser directement le flux cout
    Enfin bref j'ais pas trop compris ce que tu veux ?

  4. #4
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,

    Juste pour info, histoire que nous parlions tous "le même langage": Contrairement à java ou à C# (pour lesquels il n'existe que la notion de méthode), C++ est un langage qui ne fait payer au développeur que le cout de ce qu'il utilise. Si bien que ce que tu appelle "méthode" s'appelle en réalité "fonction membre (d'une classe) et que l'on peut diviser ces fonctions en deux catégories:
    1. les fonctions dont le comportement est défini "une bonne fois pour toutes", sans possibilité pour les classes dérivées de fournir une autre implémentation de celui-ci et
    2. les fonctions dont le comportement peut être redéfini par les classes dérivées.

    En C++, le terme méthode correspond en réalité à la deuxième catégorie de fonctions, que l'on désigne souvent aussi sous le terme de "fonctions virtuelles" (parce qu'elles sont, tout simplement, précédées du mot clé virtual)

    De langages comme java et C# ne font pas cette différence parce que, pour eux, il est systématiquement possible de redéfinir le comportement de n'importe quelle fonction dans les classes dérivées. En C++, nous dirions que toutes les fonctions sont implicitement virtuelles en java et en C#

    Mais, comme ce n'est pas le cas en C++, il faut bien être conscient que le terme méthode ne s'applique qu'à une petite partie seulement des fonctions membres que l'on pourra rencontrer: les fonctions membres virtuelles. En effet, si toutes les méthodes (autrement dit : les fonctions membres virtuelles) sont des fonctions membres, toutes les fonctions membres ne sont pas forcément des méthodes (autrement dit des fonctions membres virtuelles).

    Et c'est d'autant plus vrai que les fonctions membres ne sont considérées comme virtuelle en C++ que si on le signale de manière explicite au compilateur (au travers du mot clé virtual), si bien que, par défaut, les fonctions membres... ne sont pas des méthodes.

    Dés lors, je sais que cela a l'air idiot de prime abord, essayons d'éviter l'utilisation du terme "méthode" en C++, à moins d'avoir la certitude qu'il sera bel et bien compris de la même manière par tout le monde et nous préférons donc parler de "fonction membre", quitte à parler spécifiquement de "fonction membre virtuelle" s'il est évident que le comportement de la fonction doit pouvoir être redéfini dans les classes dérivées.

    Je suis bien conscient que cela n'a absolument rien à voir avec ton problème d'origine, mais je suis également conscient au vu de ta question que tu est strictement débutant. Si j'ai pris le temps d'écrire cette tartine, c'est parce que le plus difficile n'est pas forcément d'apprendre un langage, aussi complexe puisse-t-il être, mais bien d'apprendre le jargon des développeurs qui utilisent ce langage
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    De langages comme java et C# ne font pas cette différence parce que, pour eux, il est systématiquement possible de redéfinir le comportement de n'importe quelle fonction dans les classes dérivées.En C++, nous dirions que toutes les fonctions sont implicitement virtuelles en java et en C#

    C#, c'est pas du JAVA.
    Tout comme le C++, une méthode n'est pas, dans tout langage .NET, virtuelle par défaut.

    Et je trouve que la réticence à utiliser le terme "méthode" en C++, utilisé par tous les autres langages Orienté Objet et par Bjarne Stroustrup (créateur du langage C++), n'est qu'une trace du pédantisme C++ qui n'a pas voulu se mélanger aux autres langages Orienté Objet et que les premiers normalisateurs ont été bercé trop près du mur C (ou celle les fonctions existent).

    En C#, une méthode, elle peut être virtuelle ou pas, static ou pas, etc...

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mai 2014
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 227
    Points : 162
    Points
    162
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Salut,

    Juste pour info, histoire que nous parlions tous "le même langage": Contrairement à java ou à C# (pour lesquels il n'existe que la notion de méthode), C++ est un langage qui ne fait payer au développeur que le cout de ce qu'il utilise. Si bien que ce que tu appelle "méthode" s'appelle en réalité "fonction membre (d'une classe) et que l'on peut diviser ces fonctions en deux catégories:
    1. les fonctions dont le comportement est défini "une bonne fois pour toutes", sans possibilité pour les classes dérivées de fournir une autre implémentation de celui-ci et
    2. les fonctions dont le comportement peut être redéfini par les classes dérivées.

    En C++, le terme méthode correspond en réalité à la deuxième catégorie de fonctions, que l'on désigne souvent aussi sous le terme de "fonctions virtuelles" (parce qu'elles sont, tout simplement, précédées du mot clé virtual)

    De langages comme java et C# ne font pas cette différence parce que, pour eux, il est systématiquement possible de redéfinir le comportement de n'importe quelle fonction dans les classes dérivées. En C++, nous dirions que toutes les fonctions sont implicitement virtuelles en java et en C#

    Mais, comme ce n'est pas le cas en C++, il faut bien être conscient que le terme méthode ne s'applique qu'à une petite partie seulement des fonctions membres que l'on pourra rencontrer: les fonctions membres virtuelles. En effet, si toutes les méthodes (autrement dit : les fonctions membres virtuelles) sont des fonctions membres, toutes les fonctions membres ne sont pas forcément des méthodes (autrement dit des fonctions membres virtuelles).

    Et c'est d'autant plus vrai que les fonctions membres ne sont considérées comme virtuelle en C++ que si on le signale de manière explicite au compilateur (au travers du mot clé virtual), si bien que, par défaut, les fonctions membres... ne sont pas des méthodes.

    Dés lors, je sais que cela a l'air idiot de prime abord, essayons d'éviter l'utilisation du terme "méthode" en C++, à moins d'avoir la certitude qu'il sera bel et bien compris de la même manière par tout le monde et nous préférons donc parler de "fonction membre", quitte à parler spécifiquement de "fonction membre virtuelle" s'il est évident que le comportement de la fonction doit pouvoir être redéfini dans les classes dérivées.

    Je suis bien conscient que cela n'a absolument rien à voir avec ton problème d'origine, mais je suis également conscient au vu de ta question que tu est strictement débutant. Si j'ai pris le temps d'écrire cette tartine, c'est parce que le plus difficile n'est pas forcément d'apprendre un langage, aussi complexe puisse-t-il être, mais bien d'apprendre le jargon des développeurs qui utilisent ce langage
    XD l'abus +1

Discussions similaires

  1. [Sécurité] Une question sur les sessions PHP
    Par DaRiaN dans le forum Langage
    Réponses: 2
    Dernier message: 06/07/2006, 09h36
  2. Encore une question sur les Sous-Forums
    Par Swoög dans le forum Evolutions du club
    Réponses: 12
    Dernier message: 27/05/2006, 02h17
  3. une question sur les composants
    Par m14w dans le forum Delphi
    Réponses: 2
    Dernier message: 17/05/2006, 19h26
  4. Encore une question sur les ListBox !!
    Par SebRs dans le forum Windows
    Réponses: 3
    Dernier message: 09/05/2006, 15h29
  5. une question sur les includes comportement bizard
    Par e-m.guillaume dans le forum Langage
    Réponses: 2
    Dernier message: 24/02/2006, 21h12

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