Fehler, Irrtümer, Fragen - Seite 1736
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
falls es jemanden interessiert, die Antwort von Servicedesk:
Ich bin sehr interessiert! Bitte erläutern Sie die Antwort des Service Desk anhand eines Beispiels.
& == GetPointer(). * - nichts hat sich geändert.
Ich bin sehr interessiert! Bitte erläutern Sie die Antwort des Service Desk anhand eines Beispiels.
& == GetPointer(). * - nichts hat sich geändert.
Falls es jemanden interessiert, die Antwort lautet: servicedesk:
Übrigens habe ich ihnen neulich einen Vorschlag zur Einführung von Zeigern auf beliebige Datentypen geschickt. Und diese lächerliche Einschränkung ist schon ärgerlich.
es wäre schön, das Überladen des *-Operators einzuführen, denn ohne ihn können wir die Identität mit STL nicht realisieren, außerdem wäre es schön, den Typedef in vollem Umfang einzuführen, nicht nur bei calback`i
Was für ein Beispiel wollen Sie?
Was Sie von * und & erwarten. Etwas Einfaches, aber Anschauliches. Um die Bequemlichkeit zu sehen.
Was ich will, habe ich bereits oben geschrieben.
Sie können sich selbst ein Beispiel mit dem '&'-Operator ausdenken, in dem Sie GetPointer(...) verwenden, es ist im Wesentlichen eine Kurzform
Das Beispiel mit dem '*'-Operator - ich weiß nicht, ob es Ihnen hilft, es zu verstehen:
{
int m_value;
public:
Iterator(const int val) : m_value(val) { }
int operator*() { return m_value; }
};
int main(int argc, char **argv) {
Iterator *_it = new Iterator(5);
int _val = **_it;
//---
return 0;
}
es funktioniert in C++, aber in MQL müssen Sie einen Geter machen, um m_value zu erhalten.
Fügen Sie der Hilfe hinzu, dass ChartRedraw(MainChartID) nicht für das Neuzeichnen von OBJ_CHART geeignet ist. Die Funktion ChartRedraw(ObjChartID) ist erforderlich.
Daher ist das Beispiel in der Hilfe falsch.
Bitte beschränken Sie den Maßstab nicht auf N <= 5 (Größe der Fläche unter dem Balken = 2^N).
Dies ist notwendig (und zweckmäßig geworden), um die Tick-Historie detaillierter betrachten zu können.
{
public:
const int a;
A( int c = 0 ) : a(c) {}
virtual int f()
{
Print(__FUNCTION__);
return(this.a);
}
};
class B : public A
{
public:
const int b;
B( int c = 0 ) : A(c), b(this.f()){}
virtual int f()
{
Print(__FUNCTION__);
return(this.a);
}
};
void OnStart()
{
B b;
A* a = new B;
delete a;
}
Ergebnis
2016.10.18 09:35:01.981 Test14 (GBPUSD,M1) B::f
Was ist der Grund für die Ausgabe von B::F und nicht von A::f? Das Skript ist so geschrieben, dass f aufgerufen wird, BEVOR der Körper des Konstruktors ausgeführt wird (fett gedruckt). Aber zu diesem Zeitpunkt ist der Konstruktor der Basisklasse A bereits aufgerufen worden. Aus diesem Grund scheint this.f() genau auf die Basisklasse zu verweisen, bevor der Konstruktor B aufgerufen wird. Bitte erläutern Sie, wo der Fehler in der Argumentation/Vorhersage liegt.