Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 179

 
Reshetov:

Dies ist kein Zeiger auf sich selbst, sondern ein Zeiger, der mit dem Feldbezeichner in der Objektimplementierung verbunden ist.

D.h. es kann eine lokale Variable mit dem gleichen Bezeichner wie das Feld in einer Objektmethode vorhanden sein. In diesem Fall können Sie dies verwenden, um einen Zeiger auf das Objektfeld von einem Zeiger auf eine lokale Variable zu unterscheiden.

für welchen Zweck könnte dies verwendet werden? können Sie dies als Beispiel verwenden?
 
Barbarian2:
Für welchen Zweck könnte dies verwendet werden? Können Sie mir ein Beispiel nennen?
Dies wird am häufigsten in Klassenkonstruktoren verwendet, um keine neuen Bezeichner zu erfinden, da in Konstruktoren den Objektfeldern Argumentwerte zugewiesen werden.
 
Barbarian2:
aber für welche Zwecke könnte dies erforderlich sein? können Sie ein Beispiel nennen?
class node
{
   public:
      void LinkWithNode(node* childNode)
      {
          if(CheckPoint(linkNode) != POINTER_INVALID)
             this.childNode = childNode;
      }
   private:
      node* childNode;
};

class LineNode : node
{
   public:
      LineNode(node* parentNode)
      {
         parentNode.LinkWithNode(GetPointer(this));
      }
};

In diesem Fall müssen Sie bei der Erstellung eines LineNode den übergeordneten Knoten angeben, zu dem die aktuelle LineNode-Instanz gehört. Der übergeordnete Knoten kann dann per Verweis auf diese Instanz verweisen. In diesem Beispiel wird das Wort this zweimal verwendet. Im ersten Fall gibt das Wort this an, dass sich die Variable childNode speziell auf die aktuelle Klasse bezieht, während die Variable childNode ohne this eine gleichnamige Variable der Methode LinkWithNode ist. Im zweiten Fall wird die aktuelle Instanz der Klasse zurückgegeben, und GetPointer erhält einen Zeiger auf sie. Dies ermöglicht es Ihnen, einen LineNode im Moment der Erstellung zu binden.

 
C-4:

In diesem Fall müssen Sie bei der Erstellung eines LineNode den übergeordneten Knoten angeben, zu dem die aktuelle LineNode-Instanz gehört. Der übergeordnete Knoten kann dann per Verweis auf diese Instanz verweisen. In diesem Beispiel wird das Wort this zweimal verwendet. Im ersten Fall gibt das Wort this an, dass sich die Variable childNode speziell auf die aktuelle Klasse bezieht, während die Variable childNode ohne this eine gleichnamige Variable der Methode LinkWithNode ist. Im zweiten Fall wird die aktuelle Instanz der Klasse zurückgegeben, und GetPointer erhält einen Zeiger auf sie. So ist es möglich, LineNode im Moment der Erstellung zu binden.

d.h. im zweiten Fall wird es zu einer Reduzierung des Codes führen?
 
Barbarian2:
d.h. im zweiten Fall zu einer Verringerung des Codes führen wird?
Wie auch immer die Abkürzung lauten mag (in diesem Fall), Sie konzentrieren sich auf das Falsche. Die Verwendung kann unterschiedlich sein. Es ist wichtig zu verstehen, dass this ein Synonym für die Objektinstanz ist, in der this verwendet wird. Bei der Definition einer Klasse, wenn es noch keine Instanzen von this gibt, ist dies die einzige Möglichkeit, dem Compiler zu sagen, was der Programmierer meint.
 
Barbarian2:
d.h. im zweiten Fall zu einer Verringerung des Codes führen wird?

Nein, das ist es nicht. Dies ermöglicht es uns, eine Instanz einer Klasse bereits in ihrer Definition zu kontrollieren. Mit diesem Wissen können wir einer bestimmten Instanz unser eigenes einzigartiges Verhalten aufzwingen. Dadurch wird ein hohes Maß an Flexibilität und Abstraktion erreicht.

 

Ein Ratschlag. Ich wechsle von mql4 zu 5, ich werde einen Indikator für 1000 oder 10k Puffer schreiben. Ist es möglich, die Puffer mit Variablen zu benennen?

Wie

while( a<1000)

{

a++ B++

Name des Puffers = buff+a

buff(a)=iMA(null, B,) }

Und anschließende Pufferverarbeitung mit der gleichen Schleife

Oder jede andere Möglichkeit, Zeit und Code mit neuen mql5-Funktionen zu reduzieren.

 
Andrei-1:

Zunächst einmal liegt die Grenze bei 256 Puffern (ich könnte mich irren).

Und Puffer sind in Ordnung, man kann sie in Klassen unterbringen, Aliase vergeben und nach Aliasen suchen.

 
Vielen Dank, wir werden uns das ansehen.
 
Andrei-1:

Irgendwo in Artikel tol64 sah, kann ich nicht auf einen Blick erinnern, suchen Sie es.

TheXpert:

Zunächst einmal liegt die Grenze bei 256 Puffern (ich könnte mich irren).

Und mit Puffern ist alles in Ordnung, man kann sie in Klassen einordnen, ihnen Aliasnamen geben und nach Aliasen suchen.

In der Hilfe gibt es keine Einschränkung: "Die Anzahl der Indikatorpuffer, die Sie in einem benutzerdefinierten Indikator verwenden können, ist nicht begrenzt. ", aber irgendwo wurde 512 erwähnt, ich weiß es also nicht.
Grund der Beschwerde: