Como usar variavel que foi criada em algum metodo para ser usado em outro metodo?



  • Boa tarde gente, sou principiante em programacao e estou com uma duvida. Criei um metodo para abrir um arquivo e pegar alguma informacao jogando-a em uma variavel. Mas a minha duvida e': como consigo usar essa mesma variavel mas em outro metodo?

    Esse e' meu codigo:

      void readJson()
       {
          QJsonValue port;
          QJsonValue ip;
          QString val;
          QFile file;
          file.setFileName("/home/msdilieto/teste.conf");
          file.open(QIODevice::ReadOnly | QIODevice::Text);
          val = file.readAll();
          file.close();
          qWarning() << val;
          QJsonDocument d = QJsonDocument::fromJson(val.toUtf8());
          QJsonObject sett2 = d.object();
          QJsonValue decoder_id = sett2.value(QString("decoder_id"));
          qWarning() << decoder_id.toString();
          port = sett2.value(QString("port"));
          qWarning() << port.toString();
          ip = sett2.value(QString("ip"));
          qWarning() << ip.toString();
    


  • Olá @MSDiLieto.

    Eu recomendo você a ler a parte inicial desse artigo Escopo (C++).

    Escopo refere-se a visão de variáveis em sua aplicação, isto é, se você criar uma variável dentro de uma função, a mesma só será visível e acessivel dentro da mesma. (Lembrando que, quando um escopo é finalizado, as variáveis que e estão neles são removidas da memória.(

    Você pode pensar em duas formas de conseguir expor essa informação para outro método.

    1. Chamando o outro método dentro da sua função de leitura e passando as variaveis desejadas como parâmetro
    void func_2(int v)
    {
       // acessar a variável V
    }
    void func_leitura() 
    {
        // fazer a leitura
       int valor = 3; // so existe enquanto o metodo func_leitura é executado.
       func_2(valor); // chama o outro método
    }
    
    1. Definindo a variável no mesmo escopo onde seus metodos podem visualiza-la e acessá-la. Exemplo Classe
    Class A{
    public: 
      A() {}
      void func_2();
      void funcLeitura();
    private:
       int valor; // valor pertence a classe e não ao método em si
    };
    
    void A::func_leitura()
    {
         valor = 3;
    }
    
    void A:func_2()
    {
       // acessar, exibir ou modificar a variável valor.
    }
    

Log in to reply