Fehler, Irrtümer, Fragen - Seite 2661
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 entschuldige mich dafür, dass ich den Code auf ein Minimum vereinfacht habe und dadurch einige Ungenauigkeiten entstanden sind:
- die an die Funktion übergebenen Objekte die gleiche Größe haben (Code aktualisiert);
- anstelle der stummen Ausgabe printf("1");/printf("2"); auf die Schnittstelle oder die Objektinterna wird tatsächlich direkt zugegriffen, was wiederum nicht erlaubt, zwei Algorithmen in eine einzige Aufruffunktion einzubinden (Code aktualisiert).
Ich entschuldige mich dafür, dass ich den Code auf ein Minimum vereinfacht habe und dadurch einige Ungenauigkeiten entstanden sind:
- die an die Funktion übergebenen Objekte die gleiche Größe haben (Code aktualisiert);
- anstelle der stummen Ausgabe printf("1");/printf("2"); auf die Schnittstelle oder die Objektinterna wird tatsächlich direkt zugegriffen, was wiederum nicht erlaubt, zwei Algorithmen in eine einzige Aufruffunktion einzubinden (Code aktualisiert).
Oder so:
es ist nicht ideal, da es Änderungen in der Struktur der verwendeten Objekte erfordert und die Logik verschmiert, aber es funktioniert.
Und ja, es ist besser, eine Wrapper-Funktion über test zu machen:
Suchen Sie dann im Projekt nach allen Aufrufen:
Auf jeden Fall vielen Dank für Ihre Hilfe.
Vielen Dank für die Lösung,
Es ist nicht ideal, weil es Änderungen in der Struktur der verwendeten Objekte erfordert und die Logik verwischt, aber es funktioniert.
Und ja, es ist besser, eine Wrapper-Funktion über test:
zu erstellen, als das Projekt nach allen Aufrufen zu durchsuchen:
Auf jeden Fall vielen Dank für Ihre Hilfe.
Ja, ich stimme zu.
Defekte in der Template-Funktion/Klassen-Cache-Operation:
(nicht behoben durch MT5(build 2345)) ** Undefiniertes Verhalten, Sie erstellen ein komplexes umhülltes Objekt mit internem Typ "C" mehrmals und es stellt sich heraus, dass es ein völlig anderer Datentyp ist, vielleicht "B", vielleicht "int", was immer Sie wollen...
(nicht behoben durch MT5(build 2345)) * Kompilierfehler, Fehler bei der Übergabe eines Funktionszeigers als const ref Template-Argument.
(nicht behoben durch MT5(build 2345)) * Kompilierfehler, B<int> Objekt kann nach B<void*> Klassenobjekt erstellt werden, aber Kompilierfehler tritt auf, wenn es vorher gemacht wird.
Defekte in der Funktion/Klasse der Vorlage:
(nicht behoben durch MT5(build 2345)) ** Kompilierfehler, Fehler innerhalb der Template-Funktion, übergebener Zeiger innerhalb einerexpliziten Typkonvertierungsoperation verhält sich wie eine Klasse, sonst wie ein Zeiger.
(nicht behoben durch MT5(build 2345)) ** Kompilierfehler, Fehler bei der Generierung von Template-Klassencode bei Verwendung einer internen Klasse.
(nicht behoben durch MT5(build 2345)) ** Kompilierfehler, Fehler beim Versuch, auf eine interne Klasse für einen Template-Parameter einer Template-Funktion zuzugreifen.
(nicht behoben durch MT5(build 2345)) ** Kompilierfehler, Fehler bei der Generierung von Template-Methoden/Klassen, der Template-Parameter "Autocompletion" geht aus dem Scop in den Hauptprogrammcode.
(nicht behoben durch MT5(build 2345)) * Kompilierfehler, Fehler durch fehlende automatische Generierung von Template-Klassen-Code, wenn die Template-Klasse als Rückgabewert für die Template-Methode fungiert.
(nicht behoben durch MT5(build 2345)) * Kompilierfehler, Fehler in der internen Klassendefinition - kein Verweis auf den globalen Namespace bei der Definition einer Basisklasse.
(nicht behoben durch MT5(build 2345)) *(neu) Kompilierfehler, Fehler bei der Übergabe einer internen Struktur an eine Template-Funktion, der resultierendeDatentyp kann nicht als Basisdatentyp für eine andere interne Struktur in der Template-Klasse verwendet werden.
(nicht behoben durch MT5(build 2345)) *(neu) Kompilierfehler, ein Fehler beim Aufruf einer Template-Funktion mit expliziten Argumenttypen, wenn diese von einer überladenen Nicht-Template-Funktion aufgerufen wird.
Defekte im Rahmen von überladenen Funktionsaufrufen, die in MQL nicht mit C++ übereinstimmen:
(nicht behoben durch MT5(build 2345)) *** Kompilierfehler, wenn es eine Klassenvererbung A <= B <= C <= D gibt und zwei Überladefunktionen implementiert sind, z.B. eine mit Parameter A* und eine mit Parameter B*, dann führt die Übergabe eines Objekts C* oder D* in MQL zu einem Kompilierfehler "ambiguous call to overloaded function".
(nicht behoben durch MT5(build 2345)) ** Laufzeit, Prioritätsfehlanpassung bei Aufrufen von überladenen Template-Funktionen.
(nicht behoben durch MT5(build 2345)) **(neu) Kompilierfehler, die Priorität von Aufrufen überladener Template-Funktionen hängt tatsächlich vom Typ des Template-Parameters ab, was theoretisch das Ergebnis der Kompilierung nicht beeinflussen sollte.
(nicht behoben durch MT5(build 2345)) **(new) Compile Error, ein Kompilierungsfehler tritt auf, wenn Code für eine Template-Funktion generiert wird, obwohl es eine überladene Template-Funktion mit einer passenden Signatur für die übergebenen Parameter gibt.
Vorschläge:
ref- damit Literale und temporäre Variablen als const ref Argumente an eine Funktion übergeben werden können.
Link- beimVerschieben von Projektdateien in der Registerkarte "Projekt" wird der Speicherort von Dateien, die geöffnet sind und sich in ME-Registerkarten befinden, automatisch aktualisiert.
link- zur Einführung der Funktionalität der Typdeklaration in MQL.
link- über die Möglichkeit, die Erzeugung von Standard-Kopierkonstruktoren und Zuweisungsoperatoren zu erzwingen.
Sergey Dzyublik:
Спасибо за вариант решения
der Link ist eine temporäre Kopie, so dass Sie die Struktur nicht ändern können
Die Referenz ist eine temporäre Kopie, so dass Sie die Struktur nicht ändern können.
Sie haben im Allgemeinen Recht...
Aber in bestimmten Fällen ist es viel komplizierter, und die gegebenen Strukturen sind Iteratoren, und es ist nicht ihr Inhalt, der geändert wird, sondern die Objekte, auf die sie verweisen.
Das Problem ist also in diesem speziellen Fall gelöst, und dafür bin ich Ihnen dankbar.
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Wanzen, Wanzen, Fragen
Sergey Dzyublik, 2020.03.01 12:53
Wenn ich richtig verstehe, dann wird diese Funktion den Zeiger auf das Objekt zurückgeben, das nicht existiert?
Verstehe ich das richtig, dass diese Funktion einen Zeiger auf ein nicht vorhandenes Objekt zurückgibt?
Ja, in diesem Beispiel wird die Funktion einen Zeiger auf ein nicht existierendes Objekt zurückgeben.
Der Hauptzweck dieses Codes ist es, zu zeigen, dass es eine funktionierende Funktionalität für eine einfache Klasse gibt und gleichzeitig gibt es keine für eine Vorlagenklasse.