photo
+ Responder ao Tópico
Resultados de 1 a 1 de 1

Thread: Sobrecarga de funções de modelo

  1. #1 Fechar a publicação
    Senior Member jssuser's Avatar jssuser's Avatar
    Data de afiliação
    Aug 2018
    Postagens
    1,503
    Obrigado
    209
    Agradecimentos 1,633 Tempos em 889 Postagens
    AssinarAssinar
    subscritar: 0

    Sobrecarga de funções de modelo

    Em alguns casos, pode ser necessário sobrecarregar uma função de modelo. Por exemplo, temos uma função de modelo que grava, no primeiro parâmetro, o valor do segundo parâmetro com ajuda da conversão explícita de tipos. Na linguagem MQL5, é proibida a conversão do tipo string para o tipo bool, nós podemos fazer isto sozinhos, para tal fim, criamos a sobrecarga da função de modelo. Por exemplo:



    //+------------------------------------------------------------------+
    //| Função de modelo |
    //+------------------------------------------------------------------+
    template<typename T1,typename T2>
    string Assign(T1 &var1,T2 var2)
    {
    var1=(T1)var2;
    return(__FUNCSIG__);
    }
    //+------------------------------------------------------------------+
    //| Sobrecarga especial para o caso bool+string |
    //+------------------------------------------------------------------+
    string Assign(bool &var1,string var2)
    {
    var1=(StringCompare(var2,"true",false) || StringToInteger(var2)!=0);
    return(__FUNCSIG__);
    }
    //+------------------------------------------------------------------+
    //| Script program start function |
    //+------------------------------------------------------------------+
    void OnStart()
    {
    int i;
    bool b;
    Print(Assign(i,"test"));
    Print(Assign(b,"test"));
    }


    Como resultado da execução deste código, vemos que, para o par int+string, foi usada a função de modelo Assign(), enquanto, após a segunda chamada, para o par bool+string, já foi usada a versão sobrecarregada.



    string Assign<int,string>(int&,string)
    string Assign(bool&,string)

    Though trading on financial markets involves high risk, it can still generate extra income in case you apply the right approach. By choosing a reliable broker such as InstaForex you get access to the international financial markets and open your way towards financial independence. You can sign up here.


  2. The Following User Says Thank You to jssuser For This Useful Post:

    Não registrado (1 )

+ Responder ao Tópico

Permissões de postagens

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts