Questions des débutants MQL5 MT5 MetaTrader 5 - page 179

 
Reshetov:

Il ne s'agit pas d'un pointeur sur lui-même, mais d'un pointeur associé à l'identifiant du champ dans l'implémentation de l'objet.

Par exemple, il peut y avoir une variable locale avec le même identifiant que le champ dans une méthode de l'objet, auquel cas vous pouvez l'utiliser pour distinguer un pointeur vers le champ de l'objet d'un pointeur vers une variable locale.

dans quel but cela pourrait-il être utilisé ? pouvez-vous l'utiliser comme exemple ?
 
Barbarian2:
A quoi cela pourrait-il servir ? Pouvez-vous me donner un exemple ?
On l'utilise le plus souvent dans les constructeurs de classes, afin de ne pas créer de nouveaux identifiants, car c'est dans les constructeurs que les valeurs des arguments sont affectées aux champs des objets.
 
Barbarian2:
mais à quelles fins cela peut-il être nécessaire ? pouvez-vous donner un exemple ?
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));
      }
};

Dans ce cas, lors de la création d'un LineNode, vous devez spécifier le nœud parent auquel appartient l'instance actuelle du LineNode. Le nœud parent pourra alors se référer à cette instance par référence. Dans cet exemple, le mot "this" est utilisé deux fois. Dans le premier cas, le mot this spécifie que la variable childNode se réfère spécifiquement à la classe actuelle, alors que le childNode sans this est une variable de la méthode LinkWithNode du même nom. Dans le second cas, cela renvoie l'instance actuelle de la classe et GetPointer reçoit un pointeur sur celle-ci. Cela vous permet de lier un LineNode au moment de la création.

 
C-4:

Dans ce cas, lors de la création d'un LineNode, vous devez spécifier le nœud parent auquel appartient l'instance actuelle du LineNode. Le nœud parent pourra alors se référer à cette instance par référence. Dans cet exemple, le mot "this" est utilisé deux fois. Dans le premier cas, le mot this précise que la variable childNode se réfère spécifiquement à la classe actuelle, alors que le childNode sans this est une variable de la méthode LinkWithNode du même nom. Dans le second cas, cela renvoie l'instance actuelle de la classe et GetPointer reçoit un pointeur sur celle-ci. Il est donc possible de lier le LineNode au moment de la création.

c'est-à-dire que dans le second cas, cela conduira à une réduction du code ?
 
Barbarian2:
c'est-à-dire que dans le second cas, cela conduira à une réduction du code ?
Quel que soit le raccourci (dans ce cas), vous vous focalisez sur la mauvaise chose. L'utilisation de ceci peut être variée. L'important est de comprendre que this est un synonyme de l'instance de l'objet où this est utilisé. Lors de la définition d'une classe, lorsqu'il n'existe pas encore d'instances de this, c'est le seul moyen d'indiquer au compilateur ce que le programmeur veut dire.
 
Barbarian2:
c'est-à-dire que dans le second cas, cela conduira à une réduction du code ?

Non, ce n'est pas ça. Cela nous permet de contrôler une instance d'une classe déjà dans sa définition. Sachant cela, nous pouvons imposer notre propre comportement unique à une instance particulière. Cela permet d'atteindre un haut degré de flexibilité et d'abstraction.

 

Un conseil. Je passe de mql4 à 5, je vais écrire un indicateur pour des buffers de 1000 ou 10k. Est-il possible de nommer les tampons avec des variables ?

Comme

while( a<1000)

{

a++ B++

nom du tampon = tampon+a

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

Et traitement ultérieur du tampon avec la même boucle

Ou tout autre moyen de réduire le temps et le code avec les nouvelles fonctionnalités de mql5.

 
Andrei-1:

Tout d'abord, la limite est de 256 tampons (je peux me tromper).

Et les tampons sont corrects, vous pouvez les mettre dans des classes, leur donner des alias et faire des recherches par alias.

 
Merci, nous allons nous pencher sur la question.
 
Andrei-1:

Quelque part dans les articles tol64 a vu, je ne peux pas me rappeler à un coup d'oeil, chercher pour elle.

LeXpert:

Tout d'abord, la limite est de 256 tampons (je peux me tromper).

Et tout va bien avec les tampons, vous pouvez les mettre dans des classes, leur donner des alias et faire des recherches par alias.

Il n'y a pas de restriction dans l'aide"Le nombre de tampons d'indicateur que vous pouvez utiliser dans un indicateur personnalisé n'est pas limité. "mais il mentionnait 512 quelque part, alors je ne sais pas.