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
Não está muito claro qual é o problema. A inicialização do objeto não poderia ser colocada em um método separado como o Init(), talvez até mesmo virtual?
Sim, é claro. Não poderia class.get_int()/class.get_double()/class.get_string()/... ?)). Estilo, hábito ...
É claro que você pode. Não poderia class.get_int()/class.get_double()/class.get_string()/. ?)). Estilo, hábito ...
Podemos, mas vamos escrever d=var[x].get_double em vez de d=var[x] onde quer que haja double d, var[];. Se vamos nos engajar no masoquismo, devemos fazê-lo coletivamente =))
Assim, no final das contas, trata-se do desejo de introduzir em mql a capacidade de sobrecarregar as operações de digitação (inclusive implícita), ou seja, definir um contexto de chamada de método e, dependendo do esperado neste contexto, o tipo de valor de retorno para chamar o código requerido.
Isto obviamente não é um padrão C++, e em geral, o bom do C++ (e foi tomado pelos desenvolvedores do MQL como base) é que tudo em C++ que o programador não conseguia lidar explicitamente, ele tinha que trabalhar com as dicas e escrever seu tipo dedactilografia
um ponteiro é apenas um ponteiro para um endereço de memória, você sempre pode passá-lo como um parâmetro e obtê-lo como resultado de uma função, desreferenciar um ponteiro lhe dá um valor físico em bytes de memória, converter um ponteiro para seu novo tipo lhe dá muitos bytes de memória ))))
Na MQL, os indicadores são difíceis de dizer por que, mas eles estão lá, os desenvolvedores disseram que a prioridade é a proteção de dados, por isso todas as inovações que poderiam levar a saídas de caixas de areia são excluídas
sobre o assunto, infelizmente tenho pouca prática trabalhando com modelos ( template ), mas suspeito que você possa fazê-lo:
1. escrever algumas funções sobrecarregadas que retornam o tipo exigido como resultado, e tomar esse tipo como parâmetro, ou seja, como este:
2. agora a função f() precisa ser envolvida em um modelo e esconder o parâmetro x - se os modelos permitirem, então a chamada será a=f() - visualmente tudo será agradável, como digitar
obviamente não é um padrão C++
Eu acho que você está errado - embora eu não tenha escrito em C++ "puro" por muito tempo, há muitos exemplos de código como este na web
Eu acho que você está errado - embora eu não tenha escrito em C++ "puro" por muito tempo, mas a web está cheia de exemplos de código como este
Mas e se for um tipo complexo? - Uma estrutura ou uma matriz? Em C++ isto foi resolvido usando ponteiros para seu tipo, fisicamente o compilador retornou o endereço de memória e desreferenciando o ponteiro garantiu que os dados foram tratados corretamente
Este exemplo funcionaria corretamente, mas e se for um tipo complexo? - Em C++ isto foi resolvido com apontadores para seu tipo, fisicamente o compilador retornou o endereço da memória e o desreferenciamento do ponteiro forneceu o tratamento correto dos dados
Tal exemplo não funcionaria corretamente em mql, infelizmente.
Um tipo, estrutura ou matriz complexa pode sobrecarregar o que você precisar, não requer sobrecarga de conversão de tipo...
Em mql tal exemplo não funcionaria corretamente, infelizmente.
Bem, sim, acabei de ver, você quer sobrecarregar a conversão do tipo, a ajuda da MQL diz claramente que é permitido sobrecarregar, e as operações unárias são sobrecarregadas apenas como unárias e binárias, respectivamente, eu estava trabalhando com matrizes, tentei sobrecarregar ^ - não funciona, eu tive que usar!
Eu posso retornar((1/x) - e posso dar uma string string como parâmetro x. Normalmente todos os compiladores C verificam a correspondência do tipo em tempo de compilação, e o MQL não permite envolver soluções ambíguas emtemplates.
imho, seu problema - pós 1 do tópico, em MQL pode ser resolvido corretamente, apenas descrevendo todas asfunções sobrecarregadas. Então, todos os tipos de variáveis que são passadas e retornadas e todas as funções sobrecarregadas serão verificadas no momento da compilação.
Sim, eu acabei de ver, você quer sobrecarregar a conversão do tipo, a ajuda da MQL diz claramente que a sobrecarga é permitida, e as operações unárias são sobrecarregadas apenas como unárias e binárias respectivamente, eu estava trabalhando com matrizes, tentei sobrecarregar ^ - não funciona, eu tive que usar !
Posso afirmar por 99% que não existe tal situação em que ^ não possa sobrecarregar, enquanto ! E a capacidade de sobrecarga não depende do tipo de operador. Você deve ter entendido mal alguma coisa. Basta colocar este exemplo aqui, mas se você já esqueceu e esqueceu, é melhor não o fazer).
A única limitação que encontrei em relação ao tipo de operador é uma proibição de sobrecarga de operadores lógicos ==, !=, ! e = como aplicado aos ponteiros (qualquer_tipo * ). Sobrecarregá-los corretamente requer ou trabalhar com autobjetos ou estruturas. Só nos últimos meses eu comi muitos cães nessas coisas, então posso falar com confiança :)
Posso dizer por 99% que não há situação em que ^ não sobrecarregue, mas ! sobrecarrega. E a capacidade de sobrecarga não depende do tipo de operador. Você deve ter entendido mal alguma coisa. Basta colocar este exemplo aqui, mas se você já esqueceu e esqueceu, é melhor não o fazer).
A única restrição que encontrei com relação aos tipos de operadores é uma proibição de sobrecarga dos operadores lógicos ==, !=, ! e = aplicada aos ponteiros (qualquer_tipo * ). Sobrecarregá-los corretamente requer ou trabalhar com autobjetos ou estruturas. Nos últimos meses tenho comido muitos desses truques, então posso dizer com confiança :)
No manuseio "clássico" de matrizes você precisa usar ^ operador para transpor matrizes, aqui está meu exemplo - eu portei o método SSA da Matlab, é a mais simples multiplicação, atribuição e transposição de matrizes baseadas no CMatrixDouble - ele ... não sabe o tamanho das matrizes que armazena (quantas filas e colunas tem).