Erros, bugs, perguntas - página 2200

 

O que é que isto significa?

2018.04.24 14:02:21.721 Books   invalid book item[Si-6.18,buy,61996.00000,-50]
 
fxsaber:
Porque é que o guião não produz nada?
porque é uma transferência de ponteiro e não uma transferência de valor
 
Комбинатор:
porque é por referência e não por valor

Não o compreendo de todo. Aqui está o código

class A
{
public:
  template <typename T>
  void operator =( T& ) // Без ссылки работает
  {
    Print(__FUNCSIG__);
  }
  
  void operator =( int )
  {
    Print(__FUNCSIG__);
  }
};

void f( A*& )
{
  Print(__FUNCSIG__);
}

void OnStart()
{
  A* a = new A;  
  
  A b;  
  b = a; // cannot convert type ' *' to reference of type 'A *'
  
  a = a;
  a = 1;
  
  f(a);
  
  delete a;
}

De alguma forma queixa-se de passar um ponteiro por referência. Ao mesmo tempo, a função f recebe calmamente o ponteiro por referência.


O resultado é

void A::operator=<A*>(A*)
void A::operator=(int)
void f(A*&)

O operador int foi chamado sem qualquer problema, enquanto que o operador ponteiro não o foi.

 
Logicamente, também não deve funcionar sem uma referência (imho). isto pode ser uma característica dos apontadores mql - que não precisam de ser desreferenciados
 
Комбинатор:
Logicamente não deve funcionar sem referência (imho). Pode ser uma característica dos apontadores mql - eles não precisam de ser desreferenciados.

Um pedido a todos os que compreendem o assunto, vamos descobrir. Está um pouco desarrumado neste momento.

Eu costumava pensar que um operador era apenas um dos métodos que era conveniente utilizar por causa da sua sintaxe. E nenhuma outra distinção. Agora acontece que nem sempre é esse o caso.

 
fxsaber:

Eu costumava pensar que um operador era apenas um dos métodos

qualquer operador sim. mas

1. operador = um dos mais populares

2. O único operador que é gerado pelo compilador

 
Комбинатор:

qualquer operador sim. mas

1. operador = um dos mais procurados

2. O único operador que é gerado pelo compilador

Então, operador sobrecarregado/sobrecarregado.

 

Eu estava errado, deveria funcionar sem a ligação. significa que não funciona com a ligação por causa das nuances de substituição.

Em pluses, funciona também com uma referência.

Se tiver dúvidas sobre tais coisas, é melhor verificar com uma referência, ou seja, C++. no entanto, a sintaxe pode ser ligeiramente diferente

operator_fxsaber, C++ (gcc) - rextester
  • rextester.com
operator_fxsaber in C++ (gcc)
 
Комбинатор:

Eu estava errado, deveria funcionar sem a ligação. significa que não funciona com a ligação por causa das nuances de substituição.

Funciona nos prós e contras e com uma ligação.

Se tiver perguntas sobre tais coisas, é melhor verificar com uma referência, isto é, C++. embora a sintaxe possa ser ligeiramente diferente

Obrigado! Infelizmente, não falo nenhuma outra língua além de MQL. Também tenho um fraco conhecimento da MQL. Estou a aprender OOP em MQL.

 

No início pensei que não conhecia nada de aritmética.


Como poderiam estes dois números somar até 138,95, e como poderia adicionar dois zeros somar até -24,34?

Mas depois apercebi-me:

Se as posições abertas ontem ou antes forem fechadas hoje, não serão exibidas, mas participam no cálculo do número de posições fechadas.

Se alterar a profundidade da história apresentada e depois seleccionar novamente "Hoje", todas as posições perdidas voltarão ao seu lugar.


Este bug será corrigido? Ou ninguém precisa dele?

Razão: