Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 188

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
Die Frage ist, wie man eine nicht statische Methode einer Klasse durch einen Zeiger starten kann, auch wenn das Objekt einer anderen Klasse (in unserem Fall CTimer) eine Eigenschaft (Variable) der Klasse ist.
nein.... Sie können natürlich einen Zeiger auf ein anderes Objekt übergeben und den Zeiger dort ändern, um die Methode .... aufzurufen, aber Sie müssen den Namen der Methode kennen.
ZS: aber schrieb gestern, verwenden Sie ein Beispiel@fxsaber und erben, in jeder Klasse wird von OnTimer aufgerufen werden, wird es nur eine Basisklasse in der Schleife zu überprüfen, welche Timer hat, was Timer-Intervall, und der Start des Haupt-Timer in statische Methode zu implementieren
Die Frage ist, wie man einen Zeiger verwenden kann, um eine nicht-statische Methode einer Klasse auszuführen, auch wenn das Objekt einer anderen Klasse (in diesem Fall CTimer) eine Eigenschaft (Variable) dieser Klasse ist. Ist das möglich? Ich fürchte, nein.
- Vorlagen
- Schnittstellen
Vorlagen:
Keine Implementierung des Timers selbst hier, nur ein Beispiel, wie man eine nicht-statische Funktion aufruft (schrieb direkt im Forum, habe nicht überprüft)
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
MT5 und Geschwindigkeit in Aktion
fxsaber, 2020.10.04 11:56
Ermittelt, ob ein Programm auf einer gebremsten Maschine läuft oder nicht.
Die Frage ist, wie eine nicht-statische Klassenmethode per Zeiger ausgeführt werden kann, auch wenn das Objekt einer anderen Klasse (in diesem Fall CTimer) eine Eigenschaft (Variable) dieser Klasse ist. Und ist das möglich? Ich fürchte, nein.
Allgemein ausgedrückt, sieht das so aus:
Sie können die Lib von hier herunterladen: https://github.com/sva04091979/STD/tree/TimerEvent. TimerEvent-Zweig, noch nicht in den Master-Zweig eingefügt.
nein.... Sie können natürlich einen Zeiger auf ein anderes Objekt übergeben und den Zeiger dort ändern, um die Methode .... aufzurufen, aber Sie müssen den Namen der Methode kennen.
ZS: aber schrieb gestern, verwenden Sie ein Beispiel@fxsaber und erben, in jeder Klasse wird von OnTimer aufgerufen werden, wird es nur in der Basisklasse in der Schleife bleiben, um zu überprüfen, welche Timer hat, was Timer-Intervall, und der Start des Haupt-Timer in statische Methode implementieren
Igor, ich verstehe nicht, über welchen fxsaber-Code wir hier reden.
Vorlagen:
Es gibt keine Implementierung des Timers selbst, nur ein Beispiel, wie man eine nicht-statische Funktion aufruft (schrieb direkt auf dem Forum, habe nicht überprüft)
Ich danke Ihnen. Ich habe es ausprobiert. Es kommt nichts heraus.
Im Allgemeinen sieht es folgendermaßen aus:
Sie können die Bibliothek von hier herunterladen: https://github.com/sva04091979/STD/tree/TimerEvent. TimerEvent-Zweig, ich habe ihn noch nicht in den Master-Zweig eingefügt.
Ich danke Ihnen. Aber ich habe nicht gefunden, wie man eine nicht-statische Klasse Methode durch den Zeiger entweder laufen.
Es scheint, dass es in der aktuellen Version der MQL5-Sprache keine Lösung für dieses Problem gibtVielen Dank an Sie alle, aber vielleicht habe ich die Aufgabe nicht richtig formuliert oder aufgrund meiner begrenzten Kenntnisse keine Lösung in Ihrem Artikel gefunden.
Was brauchen Sie?
Hier ist ein Beispiel für einen Indikator.
Die Methode Timer4(blau markiert) der Klasse CTestTimer wird durch den Zeiger von der Klasse CTimer(in der Schleife der Methode CTimer:: OnTimer) gestartet, der zum Zeitpunkt der Ausführung des Konstruktors an die Klasse CTimer::NewTimer übergeben wird, wenn das Objekt der Klasse CTestTimer erstellt wird.
Ich habe alles versucht. Es gibt eine Blockade. Es ist unmöglich, einen Zeiger auf diese Methode zu erhalten. In C++ funktioniert es durch: typedef void (CTestTimer::*TFun)();
Und es gibt einen seltsamen Fehler: 'Timer4' - Zeiger auf diesen Funktionstyp wird noch nicht unterstützt ('Timer4' - Zeiger auf diesen Funktionstyp wird noch nicht unterstützt)
"For now" - als ob MQ diese Frage bis zu besseren Zeiten beiseite legen würde.
Igor, ich verstehe nicht, von welchem fxsaber-Code wir sprechen
https://www.mql5.com/ru/forum/325418/page4#comment_16116740
der Wert dieses Codes lautet.... Nun, Sie können Ihr eigenes dynamisches Objekt überall im Code erstellen -.... und machen Sie sich nicht die Mühe, es zu aktualisieren, und es wird von selbst festgenagelt, wenn Sie das Programm beenden
die Anzahl solcher Zeitschaltuhren ist nur durch Ihre Vorstellungskraft begrenzt... Ich wollte ein Sprite bewegen - habe ein Objekt erstellt, das vom linken Rand des Bildschirms nach rechts kroch und sich selbst tötete - sozusagen völlige Autonomie
...zu faul, ein Beispiel zu schreiben, keine interessante Aufgabe
https://www.mql5.com/ru/forum/325418/page4#comment_16116740
den Wert dieses Codes.... Nun, Sie können Ihr eigenes dynamisches Objekt erstellen.... überall im Code und machen Sie sich nicht die Mühe, es zu aktualisieren, und wenn Sie das Programm beenden, wird es von selbst festgenagelt sein
die Anzahl solcher Zeitschaltuhren ist nur durch Ihre Vorstellungskraft begrenzt... Ich wollte ein Sprite bewegen - habe ein Objekt erstellt, das vom linken Rand des Bildschirms nach rechts kroch und sich selbst tötete - sozusagen völlige Autonomie
...zu faul, ein Beispiel zu schreiben, keine interessante Aufgabe
Ja, ich habe einen kurzen Blick darauf geworfen.
hat es nicht verstanden.
Ja, ich habe einen kurzen Blick darauf geworfen.
hat diesen Punkt nicht verstanden.
Ich weiß nicht, warum der Code jetzt so aussieht, aber es sollte so sein:
aber für den Timer braucht man diese Methoden nicht, imho.
ZS: Das Objekt kann sich auf diese Weise selbst töten
Ich weiß nicht, warum der Code so aussieht, aber es sollte so sein:
aber für den Timer braucht man diese Methoden nicht, imho.
ZS: Das Objekt kann sich auf diese Weise selbst töten
Ich hab's, dank dir und @fxsaber. Ich habe es in meinem Sparschwein gespart.
Aber natürlich gibt es in diesem Code keine Antwort auf meine Frage.