Errori, bug, domande - pagina 3062

 

Qui è dove il compilatore dovrebbe dare un errore:

class A
  {
public:
   int               aa;
  };
A a;

void OnStart()
  {
   a.aa=999999;
   A b=GetPointer(a);//Переменная b не является указателем
   Print(b.aa);
  }

Lo script stampa dei nove.

 
Aliaksandr Hryshyn:

Qui è dove il compilatore dovrebbe dare un errore:

Gli script stampano i nove.

Forum sul trading, sistemi di trading automatico e test di strategia

Nuova versione di MetaTrader 5 build 2980: notifiche push sulle operazioni di trading

A100, 2021.06.21 08:35

In MQL, i puntatori non sono effettivamente puntatori (nessuna aritmetica degli indirizzi), ma riferimenti

E se è così, la conversione implicita diun puntatore di riferimento a un oggetto funziona

In C++ sarebbe così


#ifdef __cplusplus
#define GetPointer(a)   ((A&)(a))
void OnStart()
{
   a.aa=999999;
   A b = GetPointer(b);
   Print(b.aa);
}
#endif
 
A100 :

E poiché questo è il caso, una conversione implicita puntatore-oggetto funziona

In C++ sarebbe così:

Dato che sei molto esperto di OOP. Posso chiedere la sua opinione su questo argomento?

Bug: Const method + Copy constructor
Bug: Const method + Copy constructor
  • 2021.07.18
  • www.mql5.com
This code reproduces the bug: There are 2 workarounds for this code, you either remove the const qualifier from the method foo or create a temporar...
 
fxsaber:

Sulla macchina remota, questo ha iniziato ad accadere solo dopo un po' di tempo. Prima, tutto funzionava correttamente. Non ricordo di aver cambiato nulla nel sistema operativo.

Ricordo qualcosa di simile. Probabilmente ha qualcosa a che fare con la connessione RDP.

E passare da una finestra all'altra con Alt+Tab sembrava aiutare.

 
Andrey Khatimlianskii:

Ricordo qualcosa di simile. Probabilmente ha qualcosa a che fare con la connessione RDP.

E sembrava aiutare a passare da una finestra all'altra con Alt+Tab.

Sfortunatamente, non ha aiutato. Finché non chiudo Alert, il terminale non è ancora visibile.

 
Alain Verleyen:

Dato che sei molto esperto di OOP. Posso chiedere la sua opinione al riguardo?

In C++ tutto si compila senza errori, in MQL senza const (3) - si compila anche - significa che da qualche parte in MQL c'è un errore.

class C {
public:
    C()           { Print( 1 ); }  
    C( const C& ) { Print( 2 ); }
    C h()         { Print( 3 ); return C(); }    //(3) нормально
    C f() const   { Print( 4 ); return C(); }    //(4) ошибка при компиляции
    C g() const   { Print( 5 ); C c; return c; } //(5) замена (4)
};
void OnStart()
{
    C c;
    c.f();
}

D'altra parte - anche se (4) compilasse, la sequenza delle chiamate sarebbe comunque diversa:

in MQL: 1-4-1-2

in C++: 1-4-1

quindi è più corretto usare la variante (5) in ogni caso

 
A100 :

In C++ tutto si compila senza errori, in MQL senza const (3) - anche si compila - significa che da qualche parte in MQL c'è un errore

D'altra parte, anche se (4) compilasse, la sequenza delle chiamate sarebbe diversa:

in MQL: 1-4-1-2

in C++: 1-4-1

quindi è più corretto usare la variante (5) in ogni caso

Grazie :-)
 

Accidenti, non l'ho ancora capito, ditemi, brava gente:

Per evitare che tutti i file aperti in Metaeditor si blocchino nel momento perfetto, cosa devo fare?

Metaeditor.ini ha fatto il backup manuale o cosa? seriamente.

Solo che nemmeno dopo la chiusura/apertura, ma proprio all'aperto all'improvviso tutto è sparito. La ragione non è chiara.

 
Aleksey Mavrin:

Accidenti, ancora non capisco, ditemi, gente di buona volontà:

Per evitare che tutti i file aperti in Metaeditor si blocchino nel momento perfetto, cosa devo fare?

Metaeditor.ini ha fatto il backup manuale o cosa? seriamente.

Solo che nemmeno dopo la chiusura/apertura, ma proprio all'aperto all'improvviso tutto è sparito. La ragione non è chiara.

Io non ribalto, lo uso come versione portatile.
 

C'è un cliente. Ho fatto il suo lavoro. Voleva lavorare di nuovo con me. Ha creato un lavoro. Non riusciva a capirlo o gli mancava un passo in cui deve allegare una specifica.

Cancellato il lavoro. Secondo le regole, si può creare un solo lavoro. Non può creare, vuole creare un altro account. (Gli ho consigliato di non farlo, e ho scritto che cercherò di indirizzarmi a sostegno).

Offerto di pagare in anticipo non qui, a cui ho rifiutato. Perché non è giusto nei confronti dei terzi (MKL).

Per favore, dategli l'opportunità di creare un lavoro qui.

In qualche modo questo non è giusto. C'è una persona disposta a pagare il lavoro, c'è un esecutore che accetta di farlo e paga una commissione. Il processo si ferma.

https://www.mql5.com/en/users/mbende/feedbacks