Fragen zu OOP in MQL5 - Seite 77

 
Vladimir Simakov:

Ich stimme zu, dass es jetzt komplizierter ist)))

Ich sagte höflich nichts, obwohl ich für ein Beispiel nicht auf ein Protokoll ausgeben, sondern in eine Datei fragen wollte - ihre Protokollierung ist praktischer und macht Sinn, und in der Log des Terminals zu verstehen, was das Terminal Ausgaben, was EA - sehr unbequem

 

Wann fangen wir an, die harten Links zu erstellen, die MQ noch nicht hat?

 

Normenexperten, ich habe eine Frage:

Während ME ist ein Durcheinander mit {} Hervorhebung, kopiert den MQL-Code in ein leeres C++-Projekt in VS2019, warum VS fluchen auf diese:

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

schreibt: "Ausdruck muss vom Typ Klasse sein"

 
Igor Makanu:

Normenexperte, ich habe eine Frage:

Während ME ist ein Durcheinander mit {} Hervorhebung, kopiert den MQL-Code in ein leeres C++-Projekt in VS2019, warum VS fluchen auf diese:

schreibt: "Ausdruck muss Klassenart haben"

und in C++ ist dies ein Zeiger...

entweder außer Kraft setzen * oder ausdrücklich angeben ->

 
Maxim Kuznetsov:

und in C++ ist dies ein Zeiger...

Entweder außer Kraft setzen * oder explizit angeben ->

Ich habe den Dreh raus, wie in allen Artikeln hier, in der Regel nicht überall zu schreiben, gibt es keine Optionen innerhalb solcher einfachen Konstruktionen ... no way, imho

 
Igor Makanu:

Normenexperten, ich habe eine Frage:

Während ME ist ein Durcheinander mit {} Hervorhebung, kopiert den MQL-Code in ein leeres C++-Projekt in VS2019, warum VS fluchen auf diese:

schreibt: "Ausdruck muss vom Typ Klasse sein"

So sollte es sein:

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:

So sollte es sein:

Ich brauche es in MQL, ich heruntergeladen VS als Editor, um den Code zu durchsuchen und sehen, was ich sehen kann )))

Aber in einer solchen Struktur für MQL - gibt es keinen Sinn, dies zu schreiben?

 
Igor Makanu:

Ich brauche es in MQL, ich heruntergeladen VS als ein Editor, um den Code zu durchsuchen und sehen, was ich sehen kann ))))

aber in einer solchen Struktur für MQL - es hat keinen Sinn, dies zu schreiben ?

Ich muss das überprüfen, aber auf den ersten Blick macht dieser Ausdruck nicht nur in MQL keinen Sinn)
 
Igor Makanu:

immer wieder schreiben - ich habe Zeit (weil ich nicht fernsehe )) ) - Sammeln von technischen Informationen über Sprachfunktionen, OOP... Alles, wo es Fragen gibt - das Forum ist aktiv, ich nutze diese Möglichkeit "hundertprozentig" ;)

Die Frage ist - wozu der Wechsel von C# zu MQL, wenn ich meinen Sharp-Code einfach von MQL aus aufrufen kann, es sei denn, ich möchte ihn in Market einsetzen oder in MQ-Cloud optimieren.

Nachdem man sich an die Bequemlichkeit und Leichtigkeit der Arbeit mit Objekten gewöhnt hat, bei der man sich nicht um deren Entfernung kümmern muss, erhält man hier das Gegenteil.Wie auch immer, ein vollwertiges OOP erfordert das Vorhandensein eines Referenzzählers für referenzierte Objekte. Und in C++ wird das mit einem Wrapper gelöst - dem Smart Pointer. In MQL ist die Verwendung von Smart Pointers sehr umständlich, weil es keinen Operator -> gibt und andere Probleme.

Wenn man also von C++ umsteigt, ist alles mehr oder weniger klar: man bekommt eine Menge Unannehmlichkeiten und Einschränkungen, aber im Allgemeinen etwas Ähnliches. Und sogar einige Pluspunkte (z.B. höhere Zuverlässigkeit zur Laufzeit, aufgrund der geführten Umgebung). Aber wenn ich von Sharp umsteige, sehe ich keine Pluspunkte. Nur Nachteile )

 
Igor Makanu:

Ich habe gelernt, dies in alle Artikel hier zu kleben, nirgendwo zu schreiben, es gibt einfach keine Optionen innerhalb solch einfacher Strukturen...ponts, imho

Im Allgemeinen wird hier viel kontroverser Stil durchgesetzt)))) Das gleiche

return (retValue);

Warum Klammern? Es handelt sich nicht um JS, obwohl Sie es auch dort nicht tun müssen.

Und wenn man das wirklich braucht und es im Plus wäre, dann kann man statt dieser Makrosubstitution

#ifdef __cplusplus
   #define THIS *this
#else
   #define THIS this
#endif
Grund der Beschwerde: