![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
liegt ebenfalls in der Obhut der Moderatoren
Wer auch immer etwas von Sorgerecht gesagt hat... sondern eine Figur mit zwei Exzentrizitäten...
auch unter der Vormundschaft der Moderatoren
Ich scheine meinen eigenen Beitrag gelöscht zu haben.
Dies war der Fall, wenn ein Objekt in einer Funktion über new erstellt wird. Ursprünglich ging es darum, einen Zeiger auf ein vorhandenes Objekt zu übergeben. Und hier kann es so weitergegeben werden:
void f(CObj * obj){}
Und wenn ein Zeiger an eine Funktion übergeben werden muss, um ein Objekt in der Funktion zu erstellen, dann funktioniert das auch so:
Das ist alles, was Sie über OOP wissen wollten, aber nicht zu fragen wagten)))Dieser Code schmeißt das Terminal für mich raus. Im besten Fall verursacht es einen kritischen Fehler bei der Fehlersuche (für eine Animation klicken Sie auf das Bild):
Seltsam, dass ein solches Konstrukt vom Compiler übersprungen wird.
Dmitry hat das erste Beispiel mit einem Fehler angegeben, und was ist daran falsch?
Dim, ja, es kompiliert ohne Fehler, aber wenn Sie das Skript ausführen, erscheint ein Fehler.
Vladimir korrigierte es und fügte einen Zeiger hinzu, der Code funktionierte korrekt.
Was brauchen wir sonst noch? Jetzt müssen wir herausfinden, wer der Coolste ist. ))))
Leute, seid respektvoll zueinander und greift nicht auf Persönlichkeiten und Beleidigungen mit Arroganz zurück.
Erstes Beispiel von Dimitri
Berichtigung durch Vladimir.
Meine Korrektur mit einem Ausdruck des Methodenergebnisses, um zu überprüfen
Dieses Beispiel funktioniert jetzt, was brauchen Sie noch?
Hören Sie auf zu versuchen, herauszufinden, wer cooler ist oder nicht, jeder hat Tippfehler und Fehler.
Im Zuge dieser Argumente haben wir wohl einen Compilerfehler festgestellt.
Warum überspringt der Compiler die Kompilierung des ersten Beispiels von Dmitri ohne Fehler?
Dieser Code schmeißt das Terminal für mich raus. Bestenfalls verursacht es einen kritischen Fehler bei der Fehlersuche:
Es ist seltsam, dass ein solches Konstrukt vom Compiler durchgelassen wird.
Hier gilt alles für den Compiler.
Ein Zeiger auf ein Objekt im Programmdatensegment wird erstellt und während der Kompilierung 0x0 initiiert.
Die notwendigen Befehle an den Prozessor werden im Codesegment erstellt.
Zur Laufzeit werden die Befehle auf dem Stack an der Adresse der Funktion z(...) abgelegt.
Und dort bewegen rdx [0x0]
Und der Zugriff auf eine Null-Speicheradresse ist verboten. Die Dereferenzierung eines Null-Zeigers wird als
Hier gilt alles für den Compiler.
Für welchen Compiler?
Dieser Code schmeißt das Terminal für mich raus. Im besten Fall verursacht es einen kritischen Fehler bei der Fehlersuche (für eine Animation klicken Sie auf das Bild):
Seltsam, dass ein solches Konstrukt vom Compiler übersprungen wird.
Meine kompiliert, funktioniert richtig, aber zeigt ein Speicherleck (Löschen funktioniert nicht) Nachricht nach Abschluss.
Du bringst ihm jetzt die schlechten Dinge bei, die guten müssen erst noch behandelt werden )))
Sie haben sich nicht umsonst mit den fxsaber-Codes beschäftigt. Das klingt für mich wie ein Meisterwerk.
Entschuldigung für die Fehlinformation, ich habe vorhin geschrieben, dass man die Methode Create() nicht in einer untergeordneten Klasse aufrufen kann.
Jetzt doppelt geprüft, Sie können. Der Zugang zum privaten Mitglied m_button war jedoch nicht verfügbar. D.h. es war nicht möglich, z.B. den Zustand der Taste zu überprüfen : gedrückt/freigegeben.
Mit Igors Hinweis ist das jetzt möglich.