Erros, bugs, perguntas - página 1355

 
Ilyas:

Num futuro próximo, se uma declaração de conversão apropriada estiver sobrecarregada numa classe, ela será chamada.

Mmmm, yummy ) muito boas notícias
 
Honestamente não vi nada de errado com esta conversão, dado que é explícita. Porque haveria aqui um erro? Se alguém quer um valor numérico para um descritor, não há qualquer erro sobre isso.
 
Ilyas:
Mas não faz sentido converter um descritor para um número ou vice-versa, e isto é muito provavelmente um erro no código.
Tenho fragmentos de código onde os apontadores são explicitamente convertidos em números (para interface com sistemas de escrita/leitura externos, bem como para análise e depuração de erros), se isto for proibido, então a flexibilidade será reduzida e teremos de refazer.
 
Ilyas:
Naturalmente, em termos de "como é armazenado na memória", tem razão.
Mas não faz sentido converter o 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 um operador de conversão apropriado estiver sobrecarregado numa classe, será chamado.
Pode haver aqui um aviso, mas não um erro.
 
Ilyas:
Naturalmente, em termos de "como é armazenado na memória", tem razão.
Mas não faz sentido reduzir o descritor a um número ou vice-versa, e o mais provável é que seja um erro no código.
Num futuro próximo, se um operador de conversão apropriado estiver sobrecarregado na classe, ele será chamado.

Claro que foi o meu erro de desatenção, já escrevi sobre isso. Eu tenho 95% de erros, não erros de sistema, mas devido a desatenção )) A propósito, também não vejo sentido em lançar um descritor para um número. É mais interessante com apontadores onde há aritmética de ponteiro, por exemplo, pode decompor-se duplamente em bytes ou fazer algo não trivial. E um descritor é apenas um identificador interno, dado pelo sistema de tempo de execução MT4, não se pode fazer nada com ele.

Foi assim que este erro ocorreu, não há necessidade de escrever código à noite ))

// order - это дескриптор экземпляра класса, создается вот так после открытия ордера, потом заносится в CList открытых ордеров.
// COrder* order = new COrder(ticket, symbol, cmd, volume, price, timeOpen, magic, stoploss, takeprofit, comment, expiration);

// так было неправильно, просто я перепутал order с тикетом, забыл, что это же экземпляр класса, уставший был ))
logBuf[logBufCount++] = double(order);

// так правильно
logBuf[logBufCount++] = (double)order.Ticket
 
A100:
Um descritor continua a ser um número concreto. Só porque não aponta para uma determinada secção de memória, não a priva de propriedades numéricas.

Depois, o cordel é também um conjunto de números específicos. E uma imagem é também um número e um pulso eléctrico num chip.

Em geral, estudar engenharia eléctrica, colega.

 
Alexey Navoykov:
Para ser honesto, não vi nada de errado com esta citação, considerando que é explícita. Porque deveria haver aqui um erro? ...

Porque o controlo de tipo é violado, e o ambiente gerido, que é a máquina virtual MQL, deve impedir tais coisas:

MQL != C+++

 
Ilyas:
Naturalmente, em termos de "como é armazenado na memória", tem razão.
Mas não faz sentido converter o 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 o operador de conversão apropriado estiver sobrecarregado numa classe, será chamado.
Muito fresco e, o mais importante, ideologicamente correcto. Duas mãos a favor!
 
Alexey Volchanskiy:

A propósito, também não vejo a vantagem de reduzir o descritor a qualquer número...

Existe um tal ponto. Esta é uma propriedade muito útil para recipientes de dados específicos, tais como dicionários, onde o descritor, por definição único, pode ser a chave para uma classe. Neste caso, não haverá necessidade de calcular o seu hash e, mais importante, é possível distinguir a singularidade dos objectos por referência e por valor (que na realidade são conceitos diferentes). Além disso, as classes que não estão relacionadas entre si por herança podem ser colocadas na colecção.
 
Alexey Volchanskiy:

E o descritor é apenas um identificador interno dado pelo sistema de tempo de execução MT4, não se pode fazer nada com ele.

Outros sim. Abrir novos horizontes.