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
BTW, sind Sie sich bewusst, dass Build 1325 Zeiger auf Funktionen eingeführt hat?
Macht das einen Unterschied bei der Anwendung der Dreieckskommunikation?
MQL5: Unterstützung von Zeigern auf Funktionen wurde hinzugefügt, um die Anordnung von Ereignismodellen zu vereinfachen.
Um einen Zeiger auf eine Funktion zu deklarieren, geben Sie z.B. den Typ "Zeiger auf eine Funktion" an:
Jetzt ist TFunc ein Typ, und es ist möglich, die Variable Zeiger auf die Funktion zu deklarieren:
Die Variable func_ptr kann die Adresse der Funktion speichern, um sie später zu deklarieren:
Zeiger auf Funktionen können gespeichert und als Parameter übergeben werden. Sie können keinen Zeiger auf eine nicht-statische Klassenmethode erhalten.
ist wahrscheinlich nur für MT5, und von dem, was ich gesehen habe, ist es immer noch nicht für Methoden, nur Funktionen.
Jedenfalls verstehe ich immer noch nicht, wie Sie die Drittanbieter-Fähigkeit innerhalb der Basisklasse zu definieren, zum Beispiel im Zusammenhang mit Trendlinie und Container, wo ist das dritte Objekt.
Aber ich werde versuchen, wieder zu lesen.
Ich meine, wie und wo man entscheidet, wer (welche Klasse) was (Ereignis) bekommt.
Es ist klar, dass der oberste Dispatcher, der sprachliche, d.h. der sprachliche ::OnChartEvent nur einmal in einem Projekt geschrieben wird, in der obersten Klasse.
Was ist dann von hier aus der richtige Weg oder die richtigen Wege, um Ereignisse an verschiedene Objekte zu verteilen?
Sollte es eine Ereignisverteilungsklasse geben? Sollte es nur in der ::OnChartEvent auf der Grundlage von if-Anweisungen erfolgen?
Was mir im Verständnis des Ereignismodells in Verbindung mit OO und MQL5 zu fehlen scheint, ist die Frage, was die richtige Art des Dispatchings der Ereignisse ist.
Ich meine, wie und wo man entscheidet, wer (welche Klasse) was (Ereignis) bekommt.
Es ist klar, dass der oberste Dispatcher, der sprachliche, d.h. der sprachliche ::OnChartEvent nur einmal in einem Projekt geschrieben wird, in der obersten Klasse.
Was ist dann von hier aus der richtige Weg oder die richtigen Wege, um Ereignisse an verschiedene Objekte zu verteilen?
Sollte es eine Ereignisverteilungsklasse geben? Sollte es nur im ::OnChartEvent auf der Grundlage von if-Anweisungen geschehen?
OK, ich glaube, ich habe es verstanden. Es gibt ein echtes Problem der Konzeptverschiebung, wenn man von prozedural zu oop kommt.
Eigentlich wollte ich einmal den Beobachter zu implementieren und wegen des Mangels an Schnittstellen in MQL oder mehrere Vererbung habe ich nicht. Habe nicht an deine gute Idee gedacht, dass das gleiche Objekt die Schnittstelle auf beiden Seiten erzwingen kann.
So hat jetzt jedes CObject einen Platz für ein Objekt, das der Empfänger von Ereignissen ist, und hat auch eine Registrierungsmethode für das zuhörende Objekt, um sich als solches zu abonnieren, und eine Ereignissendermethode und eine Ereignishandlermethode, die vom Empfänger verwendet wird.
Eigentlich wollte ich einmal den Beobachter zu implementieren und wegen des Mangels an Schnittstellen in MQL oder mehrere Vererbung habe ich nicht. Habe nicht an deine gute Idee gedacht, dass das gleiche Objekt die Schnittstelle auf beiden Seiten erzwingen kann.
Nur um Sie zu ermutigen, ich habe mit MQL4 viel mit Listenern gearbeitet.
Danke, aber ich fühle mich nicht ermutigt (:
Ich habe es geschafft, aber nicht mit einem Vertrag zwischen Publisher und Listener, ich meine, der Publisher musste davon ausgehen, dass der Listener die Handling-Methode hat, aber nichts erzwang, dass er sie hat.
Oder ich müsste alle Hörer von einem Haupt-Hörer-Objekt erben - aber dann würde ich natürlich jeden Sinn verlieren, weil sie nicht von anderen Klassen erben können.
Wie auch immer, ich bin ein Profi im Programmieren, aber definitiv nicht in OO, wo ich noch keine Erfahrung habe, und ich konkurriere nicht mit einem von euch erfahrenen OO-Programmierern wie Doerk.
Was ich herausgefunden habe, ist, dass man als prozeduraler Programmierer gute Logik- und Programmierfähigkeiten hat, aber die Umstellung ist geistig schwer, besonders wenn ein prozedural orientierter Programmierer wie ich mit der Aufgabe konfrontiert wird, ein OO-Framework zu bauen, ist das ein völlig anderer Geisteszustand. Und das GUI-Teil-Framework ist das detaillierteste Framework mit vielen Ereignissen, um die man sich kümmern muss, ich denke, ihr werdet mir zustimmen, dass es unter den Frameworks das am schwierigsten zu erstellende ist.