Falls es jemanden interessiert, die Antwort lautet: servicedesk:
На данный момент оператор *(dereference/indirection) можно использовать только для указателей на объекты классов и это rvalue
Ich habe ihnen neulich einen Vorschlag zur Einführung von Zeigern auf beliebige Datentypen geschickt. Und diese lächerliche Einschränkung ist ärgerlich.
Alexey Navoykov: Ü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, eine Überladung des *-Operators einzuführen, da wir ohne ihn keine Identität mit STL realisieren können, außerdem wäre es schön, den Typedef vollständig einzuführen, nicht nur bei calback`i
coderex: 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
Ja, ich stimme zu. Alles ist in einem unvollendeten Zustand. Und was die Überlastungen betrifft, so bin ich mehr an dem Geisteroperator interessiert, ohne den es kaum geht.
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.
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_CHART - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
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.
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.