Ist dies ein Fehler oder übersehe ich etwas? Ein normaler parabolischer EA platziert eine Stop-Order am vorherigen Punkt, im Falle eines Kaufs unter Berücksichtigung des Spreads. Der Kurs (Ask) hat also den Auftragspreis 57781 erreicht, aber der Auftrag wird nicht eröffnet.
class CLASS1
{
public:
int i;
};
class CLASS2 : public CLASS1 {};
voidOnStart()
{
CLASS2 Object;
CLASS1* Ptr = dynamic_cast<CLASS1*>(&Object);
Ptr.i = 1;
}
d.h. Umwandlung in einen übergeordneten Typ, dann geht alles richtig, anscheinend haben sehr bedeutende Änderungen in der Sprachstruktur stattgefunden und jetzt ist der abgeleitete Typ definitiv kein Vorfahrentyp.
Geprüft auf C++:
class CLASS1
{
public:
int i;
};
class CLASS2 : public CLASS1 {};
voidOnStart()
{
CLASS1* Object = new CLASS1();
CLASS2* Ptr = (CLASS2 *)&Object;
Ptr->i = 1;
}
Das Casting eines Objekts einer Elternklasse in eine abgeleitete Klasse wird korrekt gehandhabt, d.h. es gibt einen Fehler im MQL5-Mechanismus mit Typ-Casting, es sei denn, er wurde nicht so entworfen.
d.h. Umwandlung in einen übergeordneten Typ, dann geht alles richtig, anscheinend hat eine sehr bedeutende Änderung in der Sprachstruktur stattgefunden und der abgeleitete Typ ist nun eindeutig kein Vorfahrentyp.
Parental Casting hat in MQL immer ohne dynamic_cast funktioniert - ganz klassisch. Vielleicht verstehe ich die Bedeutung von dynamic_cast nicht. Ich verstehe vielleicht den Sinn des Beispiels in der Dokumentation nicht. Jemand könnte das erklären.
Ich verstehe immer noch nicht, warum in MQL können Sie nicht einen Zeiger auf einen absteigenden Klasse Zeigertyp, aber in C++ ist es möglich, können Sie erklären, wenn es ein Fehler in MQL ist oder es sollte so sein?
Ist dies ein Fehler oder übersehe ich etwas? Ein normaler parabolischer EA platziert eine Stop-Order am vorherigen Punkt, im Falle eines Kaufs unter Berücksichtigung des Spreads.
Der Kurs (Ask) hat also den Auftragspreis 57781 erreicht, aber der Auftrag wird nicht eröffnet.
Was ist der Laufzeitfehler?
wenn Sie dies tun:
d.h. Umwandlung in einen übergeordneten Typ, dann geht alles richtig, anscheinend haben sehr bedeutende Änderungen in der Sprachstruktur stattgefunden und jetzt ist der abgeleitete Typ definitiv kein Vorfahrentyp.
Geprüft auf C++:
Das Casting eines Objekts einer Elternklasse in eine abgeleitete Klasse wird korrekt gehandhabt, d.h. es gibt einen Fehler im MQL5-Mechanismus mit Typ-Casting, es sei denn, er wurde nicht so entworfen.
Was ist der Ausführungsfehler?
Wenn Sie nicht überprüfen, was dynamic_cast zurückgibt, ist es sinnlos, es zu verwenden.
wenn Sie dies tun:
d.h. Umwandlung in einen übergeordneten Typ, dann geht alles richtig, anscheinend hat eine sehr bedeutende Änderung in der Sprachstruktur stattgefunden und der abgeleitete Typ ist nun eindeutig kein Vorfahrentyp.
Wenn Sie nicht überprüfen, was dynamic_cast zurückgibt, ist es sinnlos, es zu verwenden.
Danke, in meinem Beispiel gibt es NULL zurück. Warum ist das so?
Können Sie ein praktisches Beispiel für die Anwendung dieses Tricks nennen?
Die Entwickler verwenden es nur in Graphic.mqh wie folgt
Gleichzeitig haben sie Definitionen von Klassen/Objekten wie diese
Das heißt, sie übergeben einen Elternzeiger an ein Kind. Nun, genau das tue ich in meinem Beispiel! Wo ist der Haken an der Sache?
Ein Zeiger auf eine übergeordnete Klasse kann tatsächlich einen Zeiger auf einen Nachfahren enthalten.
Ein Zeiger auf eine übergeordnete Klasse kann tatsächlich einen Zeiger auf einen Nachfahren enthalten.
Danke, ich habe es verstanden!
Ich verstehe immer noch nicht, warum in MQL können Sie nicht einen Zeiger auf einen absteigenden Klasse Zeigertyp, aber in C++ ist es möglich, können Sie erklären, wenn es ein Fehler in MQL ist oder es sollte so sein?
ist es möglich, in C++, können Sie erklären, wenn es ein Fehler in MQL ist oder sollte es sein?