Fehler, Irrtümer, Fragen - Seite 2328
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Sie passen nicht auf.
Oder Sie. Kommen wir gleich zur Sache.
Ich habe die einfachste Variante angeboten, die morgen (nicht erst in 10 Jahren) implementiert werden könnte und die C++ ähnlich wäre (warum sollte man sonst überhaupt etwas ändern). Wenn operator*() nicht implementiert ist und auch nicht implementiert werden wird (es gab Informationen darüber im Forum), ist es außerdem unklar, warum operator->() plötzlich implementiert werden sollte (sie haben die gleiche Reihenfolge).
Sie wird weder morgen noch in 10 Jahren in dieser Form benötigt. Und Sie brauchen keine externe Ähnlichkeit, Sie brauchen Funktionen.
STL zumindest teilweise aus C++ zu portieren. Es geht hier nicht nur um den Betreiber->, wir brauchen viel mehr.
operator-> wäre der erste Schritt zu intelligenten Zeigern.
In der Tat ist nicht alles in Ordnung mit der impliziten Besetzung, wie sie jetzt ist.
Sie sehen, dass die dynamische Besetzung in der impliziten Besetzung enthalten ist
BUT
Erstens wissen wir nicht, warum sie enthalten ist, wenn die dynamische Besetzung ausdrücklich in der Sprache vorhanden ist.
zweitens ist es sehr schlecht enthalten, weil dynamischer Cast-Fehler im Falle von Funktionen kontrolliert werden kann (schlechte Zeigerausgabe), aber impliziter Cast nicht! weil er eine unkontrollierbare Ausnahme auslöst
2018.11.23 20:31:47.348 test (AUDNZD,M5) falsches Casting von Zeigern in 'test.mq5' (17,11)
Sie hat keine Wirkung.
Sie müssen entweder einen ungültigen Zeiger als Funktion angeben oder den dynamischen Cast vom impliziten Cast ausschließen und einen Kompilierungsfehler melden.
Ja, mit diesem Problem ist die Arbeit mit OOP schlecht kontrolliert und unzuverlässig. Irgendwo ändert man den Typ an einer Stelle des Programms, und dann explodiert er an wer weiß wo. In diesen Beispielen kann man irgendwie mit Krücken davonkommen, weil es eine einfache Zeigerzuweisung gibt und alles vor einem liegt. Aber im Allgemeinen, wenn ein Zeiger an eine Funktion übergeben wird und dynamisch auf etwas Unbekanntes castet, hat man keine Möglichkeit, es zu kontrollieren.
Ein Punkt ist ein universeller Operator in MQL.
Das hängt davon ab, wie man es betrachtet. Man kann sagen, es ist universell: Es funktioniert sowohl mit Objekten als auch mit Zeigern.
Oder man kann sagen, dass . funktioniert nur mit Objekten und mit Zeigern nur insofern, als der Zeiger implizit auf das Objekt gecastet wird, d. h. im Fall von
Eintrag
ist gleichbedeutend mit nicht
a
Es gibt diese Struktur
es gibt eine Variable OrdersInfo order, wenn ich versuche, sie in eine Datei zu schreiben
der Compiler meldet: 'order' - Strukturen, die Objekte enthalten, sind nicht erlaubt
Was könnte das Problem sein?
Es gibt diese Struktur
es gibt eine Variable OrdersInfo order, wenn ich versuche, sie in eine Datei zu schreiben
der Compiler meldet: 'order' - Strukturen, die Objekte enthalten, sind nicht erlaubt
Was könnte das Problem sein?
Hier
https://www.mql5.com/ru/docs/files/filewritestruct
listet die Einschränkungen auf.
MT4 auf UPU Verkehr ist negativ, heruntergeladen Geschichte Zähler begann zu erhöhen ...