![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
1. A funcionalidade descendente não está disponível. Não sei quem ou como, mas pessoalmente nunca tive acesso a SetRadius() e SetSide() do Array.Talvez haja uma forma de resolver o problema com o autogénero, mas quero passar sem ele.
2. Talvez esteja a trabalhar incorrectamente com apontadores, mas ou tenho uma fuga a toda a hora ou tenho de acertar nos apontadores mesmo no bloco onde é feito o trabalho principal.
Posso dar-vos um exemplo?
É que o exemplo que dei foi retirado da documentação e não está claro como deve funcionar...
É assim que funciona. Mas completamente sem documentação :/ (Mas, mais uma vez, pratiquei em apontadores)
Executar:
pode ser feito muito mais simplesmente... a virtualização:
Não é disso que estou a falar. Não estamos a falar apenas de usar apontadores, estamos a falar de um conjunto destes apontadores com um tipo de classe base.
Não importa se é uma simples matriz ou um conjunto de indicadores, apenas o que está escrito na classe base funciona e está disponível.
Ou talvez me esteja a escapar alguma coisa.
Por exemplo, uma classe base ligeiramente modificada (concebida como uma estrutura)
Se enfiarmos todo este material na matriz, teremos acesso a pelo menos a funcionalidade declarada na classe base.
A questão é como aceder à funcionalidade por descendente se o array é do tipo de classe base (ou seja, array é do tipo CShape)?
não é disso que estou a falar. Não estamos a falar de simplesmente usar apontadores, mas de um conjunto destes apontadores com um tipo de classe base.
A questão é como aceder à funcionalidade por um descendente se o array é do tipo de classe base (ou seja, o array é do tipo CShape)?Escrevi na última página como:
O mesmo código, apenas com uma matriz:
É assim que funciona. Mas completamente fora da documentação :/
Executar:
Para algo como isto:
deve ser arrancado com a confiscação do teclado.
Em C++, pode mover-se através da hierarquia de classes com dynamic_cast, que também não é apreciada lá. Na MQL, pode causar falhas implícitas que não podem ser facilmente resolvidas, porque o bug está num lugar completamente diferente.
Por conseguinte, desaconselho vivamente a utilização deste tipo de conversão. Isto é, de todo. Aos antepassados, por favor, às crianças ni.
Para algo como isto:
deve tirar as mãos e ter o teclado confiscado.
Em C++, pode mover-se através da hierarquia de classes usando o dynamic_cast, e também não é apreciado lá. Na MQL pode causar falhas implícitas que não podem ser facilmente resolvidas, porque o bug está num lugar completamente diferente.
Por conseguinte, desaconselho categoricamente a utilização de tal conversão. Isto é, de modo algum. Aos antepassados, por favor, não às crianças.
Qual é a forma educada de responder....
Se o programador for demasiado burro, então uma simples operação 1+1 pode causar falhas implícitas....
E quero salientar que a MQL5 não é C+++...
Isto é apenas uma possibilidade, não uma questão de aplicação....
O mesmo código, apenas com uma matriz:
1. Remover m_radius() do antepassado, não está no exemplo. :) E não terá trabalho com ele em OnStart();
2. Existe algum outro lugar onde se possa colocar a linha de apagar Base[0]? Digamos, se não for um guião mas uma coruja e eu ainda preciso dos dados na matriz.
Tenho fugas de memória de imediato. Por esta razão, tive de mudar para estruturas.
1. Remover m_radius(), não está presente no exemplo. E não trabalhar com ele em OnStart();
2. posso mover a linha de apagar Base[0] para outro lugar? Digamos, se não for um guião mas uma coruja, e eu ainda preciso dos dados na matriz.
Tive imediatamente uma fuga de memória. Tive de mudar para estruturas por esta razão...
1) Removido, funciona:
2) O principal é apagá-lo antes do fim do programa. Mas se tiveres este ponteiro criado numa função, tens de te ocupar de o guardar num lugar global...