Discussão do artigo "Melhore seus gráficos de negociação com uma GUI interativa baseada em MQL5 (Parte I): GUI móvel (II)" - página 2

 

AJUDA!


Sua visualização me intrigou e me fez pensar que não preciso criar uma classe Text. Em vez disso, planejo usar sua GUI como uma classe base que será herdada pela classe filha de cada um dos meus painéis exclusivos. A classe GUI deve conter a definição de uma função Move(....), mas não contém nenhum código funcional.Cada uma das classes filhas é essencialmente um shell que herda a classe base. Além disso, a classe filha conterá uma função Move que receberá as coordenadas x e y da função GUI onEvent e conterá código para atribuir essas coordenadas às ordenadas x e y de cada um dos objetos específicos no painel.

Embora eu seja um bom programador, não sou tão bom programador de objetos; na verdade, sou um novato. Estou recebendo a mensagem "clsGUI::CreatePanel - cannot access private member function". Presumo que isso signifique que preciso de outros qualificadores para permitir seu uso diretamente na classe filha para resolver o erro. Até agora, minhas referências não identificaram a solução.

O arquivo de inclusão e o programa estão anexados e foram originados como seu código, mas contêm muitas alterações que fiz ao tentar resolver o problema.

AVISO A TODOS OS QUE USAREM ESTE CÓDIGO, ELE CONTÉM MUITOS ERROS E NÃO TENHO QUALQUER RESPONSABILIDADE


Muito obrigado por sua ajuda


CapeCoddah

Arquivos anexados:
 
CapeCoddah #:

AJUDA!


Sua visualização me intrigou e me fez pensar que não preciso criar uma classe Text. Em vez disso, planejo usar sua GUI como uma classe base que será herdada pela classe filha de cada um dos meus painéis exclusivos. A classe GUI deve conter a definição de uma função Move(....), mas não contém nenhum código funcional.Além disso, a classe filha conterá uma função Move que receberá as coordenadas x e y da função onEvent da GUI e conterá código para atribuir essas coordenadas às ordenadas x e y de cada um dos objetos específicos no painel.

Embora eu seja um bom programador, não sou tão bom programador de objetos; na verdade, sou um novato. Estou recebendo a mensagem "clsGUI::CreatePanel - cannot access private member function". Presumo que isso signifique que preciso de outros qualificadores para permitir seu uso diretamente na classe filha para resolver o erro. Até agora, minhas referências não identificaram a solução.

O arquivo de inclusão e o programa estão anexados e foram originados como seu código, mas contêm muitas alterações que fiz ao tentar resolver o problema.

AVISO A TODOS OS QUE USAREM ESTE CÓDIGO, ELE CONTÉM MUITOS ERROS E NÃO TENHO QUALQUER RESPONSABILIDADE


Muito obrigado por sua ajuda


CapeCoddah

Na linha número 103 do arquivo .mqh:

class clsSample : clsGUI

para

class clsSample : public clsGUI

Problema resolvido.


Conceito: Tipo de herança ->

Veja a seguir o que significa cada tipo de herança:

  • Herança pública ( classe Child : public Parent ): Os membros públicos e protegidos da classe Pai tornam-se membros públicos e protegidos da classe Filho, respectivamente. Em essência, a herança pública significa "é-um". Por exemplo, um "Filho" é um tipo de "Pai".

  • Herança protegida ( classe Child : Parent protegido ): Os membros públicos e protegidos da classe Parent tornam-se membros protegidos da classe Child. Isso significa que eles podem ser acessados da classe Child e de suas subclasses, mas não de fora dessas classes.

  • Herança privada ( class Child : private Parent ): Os membros públicos e protegidos da classe Parent tornam-se membros privados da classe Child. Isso significa que eles só podem ser acessados na própria classe Child, e não em suas subclasses ou fora da classe.

Espero que tenha ajudado!

PS: use o Chart Redraw, caso contrário ele ficará esperando por um tick de preço.