A dança constante com setters, getters e parênteses é muito aborrecida.
Alexey, eu sou a favor, mas devíamos fazer uma votação, não aqui. Aqui estão algumas muletas, ainda não experimentei na MQL http://rsdn.ru/article/vcpp/props.xml
В этой статье автор рассматривает различные способы реализации свойств в стиле Visual Basic на C++. Некоторые способы специфичны для Visual C++, тогда как другие годятся для применения в любой программе, написанной на языке C++.
Alexey Volchanskiy: Alexey, eu sou a favor, mas devíamos fazer uma votação, não aqui. Há aqui algumas muletas, ainda não experimentei na MQL http://rsdn.ru/article/vcpp/props.xml
Há algo de errado com a codificação na sua ligação, está sempre a mostrar texto vermelho. Mas sei o que quer dizer, já li sobre estas muletas antes. Não é possível implementá-la em MQL neste momento, porque a sobrecarga do operador fantasma não é suportada.Mas esta característica nativa em VS é muito útil, especialmente quando envolvida numa macro. E não consome quaisquer recursos adicionais. Por isso, é mais que tempo de implementarmos propriedades em MQL também, porque tudo parece desajeitado sem elas.
Descobri-o, encontrei um bug no compilador MQL4. Eu estava desatento e demorei 2 dias a encontrá-lo. A essência do problema é a seguinte: vou dar-vos o código mais simples. Não recebo um erro de compilação ou de deformação, recebo um erro de tempo de execução.
double ptest = double(test); // тут должна быть ошибка компиляции!!!
Por favor lembrem-me como ordenar os símbolos na janela de visão geral do mercado (MT4, MT5). Num terminal são bem classificados, no outro são uma confusão. Resolvi-o há muito tempo - não me lembro como o fiz. Não há nada na documentação sobre isso, excepto o arrastar de símbolos um a um para um novo local. Mas não o fiz exactamente - é possível ordenar toda a lista manualmente. :-/
Vasiliy Sokolov: Não se pode atribuir uma classe a um tipo significativo, mesmo explicitamente. É definitivamente um erro.
Não é uma classe, é um ponteiro, e um ponteiro é um número.
class A{};
void f()
{
A *a;
int i = int(a);
}
O C++ compila sem erros
Se não se permitir uma conversão directa explícita para o dobro, na próxima vez terá int em vez de duplicar com o mesmo resultado e o compilador será novamente culpado. Tem de distinguir os seus próprios erros dos erros do compilador.
Não é uma aula, é um ponteiro, e um ponteiro é um número - aprenda a matemática.
O C++ compila sem erros
Se desactivar a conversão directa explícita para o dobro, na próxima vez terá int em vez de duplicar com o mesmo resultado e o compilador será novamente culpado. Deve distinguir os seus próprios erros dos erros do compilador.
Não há aí nenhum ponteiro, porque os ponteiros não existem na MQL4/5. Há pegas.
----------------------
Recebi uma resposta do Service Desk
Equipa de apoio2015.08.24 09:44
Obrigado pelo correio, vai arranjá-lo. De facto, deve haver aqui um erro de compilação.
Equipa de apoio2015.08.24 14:39
Estado: AbertoFechado
Obrigado pelo correio, fixado. O compilador irá agora dar um erro de compilação.
Não há aí nenhum ponteiro, porque não há ponteiros na MQL4/5. Existem descritores.
Um descritor é ainda um número específico. O facto de este número não apontar para um local de memória específico não o priva das propriedades de um número.
Naturalmente, em termos de "como é armazenado na memória", tem razão. Mas não faz sentido converter um descritor para um número ou vice-versa, e o mais provável é que seja um erro no código. Num futuro próximo, se uma declaração de conversão apropriada estiver sobrecarregada na classe, ela será chamada.
Cavalheiros, como gostariam de melhorar significativamente a usabilidade da língua, acrescentandobens: https://msdn.microsoft.com/en-us/library/x9fsa0sw.aspx
A dança constante com setters, getters e parênteses é muito aborrecida.
Cavalheiros, como gostariam de melhorar significativamente a usabilidade da língua, acrescentandobens: https://msdn.microsoft.com/en-us/library/x9fsa0sw.aspx
A dança constante com setters, getters e parênteses é muito aborrecida.
Alexey, eu sou a favor, mas devíamos fazer uma votação, não aqui. Há aqui algumas muletas, ainda não experimentei na MQL http://rsdn.ru/article/vcpp/props.xml
Há algo de errado com a codificação na sua ligação, está sempre a mostrar texto vermelho. Mas sei o que quer dizer, já li sobre estas muletas antes. Não é possível implementá-la em MQL neste momento, porque a sobrecarga do operador fantasma não é suportada.Mas esta característica nativa em VS é muito útil, especialmente quando envolvida numa macro. E não consome quaisquer recursos adicionais. Por isso, é mais que tempo de implementarmos propriedades em MQL também, porque tudo parece desajeitado sem elas.
Descobri-o, encontrei um bug no compilador MQL4. Eu estava desatento e demorei 2 dias a encontrá-lo. A essência do problema é a seguinte: vou dar-vos o código mais simples. Não recebo um erro de compilação ou de deformação, recebo um erro de tempo de execução.
Não há necessidade de qualquer erro aqui. Há aqui uma clara conversão do tipo. Seria assim em VS
Que diferença faria?Não há necessidade de qualquer erro aqui. Há aqui uma conversão de tipo explícita.
Não se pode atribuir uma classe a um tipo significativo, mesmo explicitamente. É definitivamente um erro.
Não é uma classe, é um ponteiro, e um ponteiro é um número.
O C++ compila sem erros
Se não se permitir uma conversão directa explícita para o dobro, na próxima vez terá int em vez de duplicar com o mesmo resultado e o compilador será novamente culpado. Tem de distinguir os seus próprios erros dos erros do compilador.
Não é uma aula, é um ponteiro, e um ponteiro é um número - aprenda a matemática.
O C++ compila sem erros
Se desactivar a conversão directa explícita para o dobro, na próxima vez terá int em vez de duplicar com o mesmo resultado e o compilador será novamente culpado. Deve distinguir os seus próprios erros dos erros do compilador.
Não há aí nenhum ponteiro, porque os ponteiros não existem na MQL4/5. Há pegas.
----------------------
Recebi uma resposta do Service Desk
De facto, deve haver aqui um erro de compilação.
Equipa de apoio 2015.08.24 14:39
Não há aí nenhum ponteiro, porque não há ponteiros na MQL4/5. Existem descritores.
Um descritor é ainda um número específico
Mas não faz sentido converter um descritor para um número ou vice-versa, e o mais provável é que seja um erro no código.
Num futuro próximo, se uma declaração de conversão apropriada estiver sobrecarregada na classe, ela será chamada.