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
1. Die Funktionalität der Nachkommenschaft ist nicht verfügbar. Ich weiß nicht, wer oder wie, aber ich persönlich habe nie Zugriff auf SetRadius() und SetSide() aus dem Array.Vielleicht gibt es einen Weg, um das Problem mit Autogenous zu lösen, aber ich möchte ohne sie zu tun.
2. Vielleicht arbeite ich falsch mit Zeigern, aber ich habe entweder immer ein Leck oder muss die Zeiger genau in dem Block treffen, in dem die Hauptarbeit geleistet wird.
Darf ich Ihnen ein Beispiel nennen?
Es ist nur so, dass das Beispiel, das ich gegeben habe, aus der Dokumentation stammt und es nicht klar ist, wie es funktionieren soll...
Das funktioniert folgendermaßen. Aber völlig aus der Dokumentation :/ (Aber ich habe wieder einmal mit Zeigern geübt)
Ausführen:
kann viel einfacher gemacht werden... Virtualisierung:
Das ist nicht das, was ich meine. Es geht nicht nur um die Verwendung von Zeigern, sondern um ein Array von Zeigern mit einem Basisklassentyp.
Es spielt keine Rolle, ob es sich um ein einfaches Array oder ein Array mit Zeigern handelt, es funktioniert nur das, was in der Basisklasse steht.
Oder vielleicht übersehe ich etwas.
Zum Beispiel eine leicht veränderte Basisklasse (als Struktur konzipiert)
Wenn wir all diese Dinge in das Array packen, haben wir zumindest Zugriff auf die in der Basisklasse deklarierten Funktionen.
Die Frage ist, wie der Zugriff auf Funktionalität durch Nachkomme, wenn das Array der Basisklasse Typ ist (d.h. Array ist von CShape Typ)?
Das ist nicht das, wovon ich spreche. Es geht nicht um die einfache Verwendung von Zeigern, sondern um ein Array dieser Zeiger mit einem Basisklassentyp.
Die Frage ist, wie man auf die Funktionalität durch einen Nachkommen zugreifen kann, wenn das Array vom Typ der Basisklasse ist (d.h. das Array ist vom Typ CShape)?Ich habe auf der letzten Seite geschrieben, wie:
Gleicher Code, nur mit einem Array:
So funktioniert es. Aber völlig abseits der Dokumentation :/
Ausführen:
Für etwas wie dieses:
sollte mit der Beschlagnahmung der Tastatur aufgehoben werden.
In C++ kann man sich mit dynamic_cast durch die Klassenhierarchie bewegen, und auch dort ist es nicht beliebt. In MQL kann es zu impliziten Abstürzen kommen, die nicht leicht zu beheben sind, weil der Fehler an einer ganz anderen Stelle liegt.
Daher rate ich dringend davon ab, diese Art der Umwandlung zu verwenden. Das heißt, überhaupt nicht. Für die Vorfahren bitte, für die Kinder ni.
Für etwas wie dieses:
sollte man Ihnen die Hände abnehmen und die Tastatur konfiszieren.
In C++ können Sie sich mit dynamic_cast durch die Klassenhierarchie bewegen, und auch dort ist es nicht beliebt. In MQL kann es zu impliziten Abstürzen kommen, die nicht leicht zu beheben sind, weil der Fehler an einer ganz anderen Stelle liegt.
Daher rate ich kategorisch davon ab, eine solche Umwandlung vorzunehmen. Das heißt, ganz und gar nicht. An die Vorfahren bitte, nicht an die Kinder.
Wie lautet die höfliche Antwort an....
Wenn der Programmierer zu dumm ist, dann kann eine einfache 1+1-Operation zu impliziten Abstürzen führen....
Und ich möchte darauf hinweisen, dass MQL5 nicht C++ ist...
Dies ist nur eine Möglichkeit, keine Frage der Bewerbung....
Gleicher Code, nur mit einem Array:
1. Entfernen Sie m_radius() aus dem Vorgänger, es ist nicht im Beispiel enthalten. :) Und Sie werden in OnStart() keine Arbeit damit haben;
2. Kann die Zeile delete Base[0] an eine andere Stelle verschoben werden? Nehmen wir an, es handelt sich nicht um ein Skript, sondern um eine Eule, und ich benötige trotzdem die Daten im Array.
Ich habe sofort Speicherlecks. Aus diesem Grund musste ich zu Strukturen wechseln...
1. Entfernen Sie m_radius(), es ist in dem Beispiel nicht vorhanden. Und in OnStart() keine Arbeit damit bekommen;
2. Kann ich die Zeile delete Base[0] an eine andere Stelle verschieben? Nehmen wir an, es handelt sich nicht um ein Skript, sondern um eine Eule, und ich benötige trotzdem die Daten im Array.
Ich habe sofort ein Speicherleck. Aus diesem Grund musste ich zu Strukturen wechseln...
1) Entfernt, es funktioniert:
2) Das Wichtigste ist, sie zu löschen, bevor das Programm endet... Wenn Sie diesen Zeiger jedoch in einer Funktion erstellt haben, müssen Sie dafür sorgen, dass er an einem globalen Ort gespeichert wird...