Fehler, Irrtümer, Fragen - Seite 2653
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
Nun, STL ist keine Einheitslösung für alle. Hier muss man sehr genau auf die Details achten.
Du verwechselst "weich" mit "warm".
Das ist keine Frage der STL. Ich werde es dort selbst herausfinden... (wenn jemand es nicht hat, heißt das nicht, dass es nicht prinzipiell möglich ist)
Der einfachste Weg, alle möglichen Funktionen mit abstrakten Methoden in einer Basisklasse oder Schnittstelle zu implementieren, und in den Nachkommen - entweder Implementierung oder =delte.
In diesem Fall müssen Sie Zeiger oder Referenzen desselben Typs an die Methoden der Basisklasse übergeben.
Zwar gibt es ein unvermeidliches Übel in Form einer virtuellen Tabelle, aber es ist besser, die Architektur so zu gestalten, dass es nirgendwo zu teuren Verzweigungen über dynamic_cast kommt.
Die von Ihnen vorgeschlagene Methode wurde bereits früher implementiert und beruht ebenfalls auf demselben Fehler:https://www.mql5.com/ru/forum/1111/page2648#comment_15015191
Der Fehler liegt in den Prioritäten des Aufrufs neu geladener Funktionen, wenn eine implizite Typumwandlung für einen Zeiger/Klassenparameter durchgeführt wird.
In C++ ist alles in Ordnung, aber in MQL der Kompilierungsfehler"ambiguous call to overloaded function"
Eine der Workaround-Varianten ist oben vorgeschlagen, aber es ist groß und nicht bequem, und ich habe keine Lust, es für ein Dutzend ähnliche Funktionen zu verwenden.
Vielleicht gibt es etwas Einfacheres?
Entwickler, bitte teilen Sie uns mit, ob es Pläne gibt,den Fehler zu beheben, oder ob dies architektonisch unmöglich ist?
Innerhalb einer Template-Funktion verhält sich ein übergebener Zeiger innerhalb einer expliziten Typkonvertierung wie eine Klasse und verursacht dementsprechend einen Kompilierzeitfehler:
Er ist dumm und kann ein einfaches Problem nicht lösen. Ich muss verstehen, dass der Handel während der folgenden EA-Starteinstellungen untersagt ist.
Diese Prüfung funktioniert nicht.
OrderCheck ist ein Ablenkungsmanöver. Bitte beraten Sie mich.
ANATOLI KAZHARSKI Code
Danke, ich habe das MQL_TRADE_ALLOWED nicht bemerkt.
Er ist dumm und kann ein einfaches Problem nicht lösen. Ich muss verstehen, dass der Handel während der folgenden EA-Starteinstellungen untersagt ist.
Diese Prüfung funktioniert nicht.
OrderCheck ist ein Ablenkungsmanöver. Bitte beraten Sie mich.
Wahrscheinlich ist der Grund dafür die Arbeit des Cache-Generators für Vorlagenklassen.
Fehler MT5 (Build 2340) verwendet denselben Code zweimal: erster Durchlauf - erfolgreiche Kompilierung, zweiter Durchlauf - Kompilierungsfehler.
Offenbar hängen die Probleme mit dem Cache des Template-Funktionsgenerators zusammen.
Der Fehler verschwindet, wenn für die Template-Funktion "void run(const T &ff)" die Übergabe per Referenz durch die Übergabe per Wert"void run(const T ff)" ersetzt wird.
Fehler MT5(build 2340) Kompilierungsfehler beim Versuch, auf die interne Klasse für einen Template-Parameter einer Template-Funktion zuzugreifen.