Partage
  • Partager sur Facebook
  • Partager sur Twitter

Utiliser une variable d'une autre fonction x dans

Comment faire ?

    23 juin 2018 à 19:51:16

    Bonsoir tout le monde ;

    J'apprends le C++ et je suis un gros débutant pour l'instant,

    je m'exerce à découper les fonctions, mais j'ai remarqué que c'est presque impossible de faire appel à une variable local dans une autre fonction que la sienne, j'ai essayé de trouver des solutions sur les forums en vain.

    Je croyais qu'en écrivant " return variable x ;" à la fin j'allais récupérer la variable pour l'utiliser dans une autre mais ça pas marché, surtout que la fonction ne contient aucune instruction, seulement la déclaration de la variable.

    Je sais que c'est pas faisable mais existe-il des astuces pour avoir le même résultat ?
    • Partager sur Facebook
    • Partager sur Twitter
      23 juin 2018 à 20:14:31

      Salut,

      Les variables locales, c'est fait pour rester... locale.

      Tu peux -- éventuellement -- (on le fait d'ailleurs souvent) envisager de transmettre une variable locale à une fonction qui est appelée par la fonction qui définit la variable locale, sous une forme proche de

      void bar(int i){  // s'attend à recevoir un entier 
                        // comme paramètre
          /* ... */
      }
      void foo(){
         int truc{15};
         bar(truc); // appelle bar en lui transmettant la
                    // la valeur de truc (15) comme argument
      }

      Mais, si tu n'es pas dans la fonction qui déclare la variable locale (ou dans l'une des fonctions qui auraient obtenu cette donnée sous forme de paramètre), tu n'as ni à connaitre cette variable ni (encore moins) à vouloir l'utiliser ;)

      • Partager sur Facebook
      • Partager sur Twitter
      Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
        26 juin 2018 à 14:01:44

        Salut,

        Ce que tu cherches réside peut être dans la transmission de paramètres, où une fonction peut "retourner" plusieurs valeur avec les paramètres dit d'entrée/sortie.
        On utilise de préférence les références non constantes pour cela:

        void foo(int& param)
        {
            param = 5;
        }
        
        int main()
        {
            int i = 3;
            std::cout << "avant appel, i = " << i << std::endl;
            foo(i);
            std::cout << "après appel, i = " << i << std::endl;
            return 0;
        }
        Mais il est préfèrable de retourner de façon classique un tableau, une structure ou une classe.

        -
        Edité par Deedolith 26 juin 2018 à 14:04:07

        • Partager sur Facebook
        • Partager sur Twitter
          26 juin 2018 à 16:09:11

          LoïcLoembet a écrit:

          Je croyais qu'en écrivant " return variable x ;" à la fin j'allais récupérer la variable pour l'utiliser dans une autre mais ça pas marché, surtout que la fonction ne contient aucune instruction, seulement la déclaration de la variable.

          Je sais que c'est pas faisable mais existe-il des astuces pour avoir le même résultat ?

          L'instruction return retourne une valeur. Eventuellement une copie de la valeur qui était contenue dans une variable, mais pas "la variable elle même".

          Il faudrait que tu nous expliques d'abord ce que tu veux faire. Un exemple concret.

          (et pas sous la forme "je veux faire un truc qui n'est pas faisable, surtout que." Le problème, pas ce que tu pensais être la solution).

          A partir de là on pourra voir pour une bonne vieille solution normale, pas une "astuce".

          -
          Edité par michelbillaud 26 juin 2018 à 16:11:30

          • Partager sur Facebook
          • Partager sur Twitter

          Utiliser une variable d'une autre fonction x dans

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown