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
Komm schon! Ich benutze sie ständig.
Wo, an welchem Ort und wie?
Moderatoren, entschuldigen Sie, dass ich die Frage wiederhole. Ich möchte wirklich eine Antwort darauf bekommen.
Warum sollten Sie einen an eine Funktion übergebenen Zeiger absichtlich neu zuweisen? Natürlich wird es eine undichte Stelle geben. Es handelt sich jedoch nicht um ein "klassisches Leck", sondern um einen klassischen Fehler bei der Handhabung eines Zeigers auf ein Objekt.
Sie müssen hier kein neues Objekt erstellen, sondern das externe Objekt behandeln, dessen Zeiger an die Funktion übergeben wurde.
Wo, an welchem Ort und wie?
Moderatoren, entschuldigen Sie, dass ich die Frage wiederhole. Ich möchte wirklich eine Antwort darauf bekommen.
Wo, an welchem Ort und wie?
Moderatoren, entschuldigen Sie, dass ich die Frage wiederhole. Ich möchte wirklich eine Antwort darauf bekommen.
Wenn ich die Frage richtig verstehe, deklarieren wir die Klasse als Objekt mit new.
Verwenden Sie dann einen Punkt, um öffentliche Methoden der Klasse über das erstellte Objekt aufzurufen.
Nachdem alle aufgerufenen Methoden ausgeführt wurden, löschen wir den Speicher, indem wir das erstellte Objekt delete löschen.
Wenn ich die Frage richtig verstanden habe, deklarieren wir die Klasse als ein Objekt mit new.
Dann rufen wir die öffentlichen Methoden der Klasse über das erstellte Objekt auf, indem wir einen Punkt verwenden.
Nachdem alle aufgerufenen Methoden ausgeführt wurden, löschen wir den Speicher, indem wir das erstellte Objekt delete löschen.
Nö. Zuerst dachte ich, es handele sich um einen Funktionsparameter wie diesen - ein Objekt, aber nicht als Referenz, aber am Ende steht ein Semikolon. Wenn es sich um eine normale Objekterstellung bei der Deklaration handelt, warum steht es dann in Klammern? Es bleibt also vorerst das Rätsel des Jahrhunderts.
Nö. Zuerst dachte ich, es handele sich um einen Funktionsparameter wie diesen - ein Objekt, aber nicht als Referenz, aber am Ende steht ein Semikolon. Wenn es sich um eine normale Objekterstellung bei der Deklaration handelt, warum steht es dann in Klammern? Es bleibt also vorerst das Rätsel des Jahrhunderts.
Und warum haben Sie absichtlich einen an eine Funktion übergebenen Zeiger neu zugewiesen? Natürlich wird es eine undichte Stelle geben. Es handelt sich aber nicht um ein "klassisches Leck", sondern um einen klassischen Fehler bei der Handhabung eines Zeigers auf ein Objekt.
Sie brauchen hier kein neues Objekt zu erstellen, sondern behandeln das externe Objekt, dessen Zeiger an die Funktion übergeben wurde.
Es geht nicht um mein Beispiel, sondern um die Implementierung der Zeiger selbst in MQL - wenn man sie nicht dereferenzieren muss (und der Zeiger einer Instanz des Objekts zugewiesen werden kann!), wenn man statt eines Zeigers eine Referenz auf das Objekt übergeben kannhttps://www.mql5.com/ru/forum/1111/page2471#comment_11796665
hier gibt es keine detaillierten Informationen darüber, wo und wann (CObj& obj) aufgetaucht ist (& ist keine Zeiger-Dereferenzierungsoperation, sondern die Übernahme eines Zeigers GetPointer() )
Ok, ich will keine Informationen verschwenden... Ich habe mir bereits gesagt, und ich werde es noch einmal in diesem Forum wiederholen - MQL ist nicht C++, das ist, wie es implementiert ist - gut, ich habe keine anderen Optionen
Es geht nicht um mein Beispiel, sondern um die Implementierung der Zeiger selbst in MQL - wenn man sie nicht dereferenzieren muss (und der Zeiger einer Instanz des Objekts zugewiesen werden kann!), wenn man statt eines Zeigers eine Referenz auf das Objekt übergeben kann https://www.mql5.com/ru/forum/1111/page2471#comment_11796665
hier gibt es keine detaillierten Informationen darüber, wo und wann (CObj& obj) aufgetaucht ist (& ist keine Zeiger-Dereferenzierungsoperation, sondern die Übernahme eines Zeigers GetPointer() )
Ok, ich will keine Informationen verschwenden... Ich habe mir bereits gesagt, und ich werde es noch einmal in diesem Forum wiederholen - MQL ist nicht C++, das ist, wie es implementiert ist - gut, ich habe keine anderen Optionen
Sie sind dramatisch, es gibt keine Komplexitäten und Verwirrungen.
Die Klammern bedeuten, dass es sich um einen Hinweis auf den Text handelt: ))))
So, das war's.
Zum Beispiel so:
void z(CObj * o){ }
Nicht einmal nur können, sondern besser, weil man es so nennen kann:
z(GetPointer(obj));
Wenn Sie einen Zeiger per Referenz übergeben, benötigen Sie eine weitere Variable für den Zeiger.
***
Und wenn ein Zeiger an eine Funktion übergeben werden muss, um ein Objekt in der Funktion zu erstellen, funktioniert das folgendermaßen:
Das ist im Grunde alles, was Sie über OOP wissen wollten, aber nicht zu fragen wagten)))