Fehler, Irrtümer, Fragen - Seite 1736

 
coderex:

falls es jemanden interessiert, die Antwort von Servicedesk:

На данный момент оператор *(dereference/indirection) можно использовать только для указателей на объекты классов и это rvalue

Ich bin sehr interessiert! Bitte erläutern Sie die Antwort des Service Desk anhand eines Beispiels.

& == GetPointer(). * - nichts hat sich geändert.

 
fxsaber:

Ich bin sehr interessiert! Bitte erläutern Sie die Antwort des Service Desk anhand eines Beispiels.

& == GetPointer(). * - nichts hat sich geändert.

Welches Beispiel brauchen Sie?
 
coderex:

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.
 
coderex:
Was für ein Beispiel wollen Sie?
Was Sie von * und & erwarten. Etwas Einfaches, aber Anschauliches. Sie sehen also, wie praktisch das ist.
 
fxsaber:
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:

class Iterator
  {
   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.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_CHART
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_CHART
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_CHART - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

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.

 
Bitte klären Sie das. Drehbuch
class A
{
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
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.