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
Ich verstehe immer noch nicht, über Zeiger und Referenzen in MQL5 und jetzt in MQL4. Was ist der Unterschied zwischen der Übergabe von Referenzen und Zeigern, außer dem zusätzlichen Code? In C++ gibt es einen Unterschied, aber was ist er hier? Wenn es nicht schwierig ist, mehr Details zu schreiben.
Die Übergabe per Referenz erfordert, dass das Objekt, das per Referenz übergeben wird, initialisiert wird. Bei der Übergabe per Zeiger gibt es diese Einschränkung nicht:
Wenn die Funktion TestShapeRef aufgerufen wird, stürzt der Code ab, weil die Form nicht initialisiert ist. In der Funktion TestShapePointer hingegen ist eine ständige Überprüfung erforderlich, ob das übergebene Objekt initialisiert ist oder nicht. Befolgen Sie daher die imprirische Regel:
Es gibt noch eine weitere Nuance, die Sie im Auge behalten sollten. Betrachten Sie das vorherige Beispiel:
Wird dieses Programm korrekt funktionieren? Nein, es wird mit der Fehlermeldung "invalid pointer access" in der Zeile printf(shape.name); //ERROR (!?) enden, obwohl wir scheinbar garantiert ein Objekt in der Funktion TestShapePointer erzeugen. Der Punkt ist, dass tatsächlich eine NULL-Referenz anstelle von shape übergeben wurde. Das heißt, die Form innerhalb der Funktion und die übergebene Form sind unterschiedliche Objekte! Daher ist nach dem Verlassen der Funktion shape immer noch gleich NULL, und der shape-Zeiger innerhalb der Funktion ist verloren (auf dem Stack gelöscht). Also.Ist es möglich, ein Array mit Objekten verschiedener Typen zu erstellen?
Nehmen wir dieses Beispiel:
//---
Wie erhält man Zugriff auf Methoden geerbter Klassen?
Wie kann man auf Methoden von Vererbungsklassen zugreifen?
Haben Sie versucht, einen Zieltyp zu werfen?
Nein. Das ist das erste Mal, dass ich davon höre. Wo kann ich darüber lesen?
Die übliche Typumwandlung, hier ein Beispiel:
Haben Sie versucht, auf den Zieltyp zu casten?
Scheiße, und danach reden Sie über Sprachsicherheit?
Wäre es nicht besser, Polymorphismus zu verwenden?
Es geht ungefähr so: