Domande su OOP in MQL5 - pagina 77

 
Vladimir Simakov:

Sono d'accordo che è più complicato ora)))

Ho educatamente detto niente, anche se volevo chiedere un esempio per non emettere in un log, ma in un file - la loro registrazione è più pratica e ha senso, e nel log del terminale per capire cosa emette il terminale, cosa EA - molto scomodo

 

Quando cominceremo a fare i collegamenti rigidi che MQ non ha ancora?

 

esperti di standard, ecco una domanda:

Mentre ME è un casino con l'evidenziazione di {} , ha copiato il codice MQL in un progetto C++ vuoto in VS2019, perché VS giura su questo:

struct SHash
{
  ulong hash[2];
  bool operator==(const SHash& value)const { return(this. hash[0] == value.hash[0] && this. hash[1] == value.hash[1]); }
};

scrive: "l'espressione deve essere di tipo classe"

 
Igor Makanu:

esperto di standard, ecco una domanda:

Mentre ME è un casino con l'evidenziazione di {} , ha copiato il codice MQL in un progetto C++ vuoto in VS2019, perché VS giura su questo:

scrive: "l'espressione deve avere un tipo di classe"

ma in C++ questo è un puntatore...

o sovrascrivere * o specificare esplicitamente ->

 
Maxim Kuznetsov:

e in C++ questo è un puntatore...

O sovrascrivere * o specificare esplicitamente ->

Mi sono abituato a mettere questo come in tutti gli articoli qui, in generale a non scrivere da nessuna parte, semplicemente non ci sono opzioni all'interno di costruzioni così semplici...non c'è modo, imho

 
Igor Makanu:

esperti di standard, ecco una domanda:

Mentre ME è un casino con l'evidenziazione di {} , ha copiato il codice MQL in un progetto C++ vuoto in VS2019, perché VS giura su questo:

scrive: "l'espressione deve essere di tipo classe"

È così che dovrebbe essere:

struct SHash
{
        long hash[2];
        bool operator==(const SHash& value)const { return(this->hash[0] == value.hash[0] && this->hash[1] == value.hash[1]); }
};
 
Andrei Novichkov:

È così che dovrebbe essere:

Ne ho bisogno in MQL, ho scaricato VS come editor, per sfogliare il codice e vedere cosa posso vedere )))

Ma in una tale struttura per MQL - non ha senso scrivere questo?

 
Igor Makanu:

Ne ho bisogno in MQL, ho scaricato VS come editor, per sfogliare il codice e vedere cosa posso vedere ))))

ma in una tale struttura per MQL - non ha senso scrivere questo ?

Devo controllare, ma a prima vista, questa espressione non ha senso non solo in MQL)
 
Igor Makanu:

scrivere ancora e ancora - ho tempo (perché non guardo la TV) ) ) - raccogliere informazioni tecniche sulle caratteristiche del linguaggio, OOP... Tutto ciò in cui ci sono domande - il forum è attivo, io uso questa opportunità "al cento per cento" ;)

La domanda è - che senso ha passare da C# a MQL, se posso semplicemente chiamare il mio codice Sharp da MQL, a meno che non voglia metterlo in Market o ottimizzarlo in MQ-cloud.

Dopo tutto il passaggio da C# a MQL, suppongo, è davvero doloroso ) Dopo essersi abituati alla comodità e alla facilità di lavorare con gli oggetti, dove non ci si deve preoccupare della loro rimozione, qui si ottiene il contrario.Comunque, una vera e propria OOP richiede la presenza di un contatore di riferimento per gli oggetti referenziati. E in C++ è risolto con un wrapper - lo smart pointer. In MQL l'uso di smart pointer è molto ingombrante a causa della mancanza dell'operatore ->, e altri problemi.

Quindi, se si passa dal C++, tutto è più o meno chiaro: si ottengono molti inconvenienti e limitazioni, ma in generale qualcosa di simile. E anche alcuni vantaggi (per esempio, maggiore affidabilità in fase di esecuzione, a causa dell'ambiente guidato). Ma quando si passa da Sharp, non vedo alcun vantaggio. Solo gli svantaggi )

 
Igor Makanu:

Ho imparato a infilare questo in tutti gli articoli qui, a non scrivere da nessuna parte, semplicemente non ci sono opzioni all'interno di strutture così semplici...ponts, imho

In generale, un sacco di stile controverso è imposto qui)))) Lo stesso

return (retValue);

Perché le staffe? Non è JS, anche se non devi farlo neanche lì.

E se avete davvero bisogno di questo e che sarebbe nel plus corretto, allora invece di questa macrosostituzione

#ifdef __cplusplus
   #define THIS *this
#else
   #define THIS this
#endif