Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 179

 
Reshetov:

No se trata de un puntero a sí mismo, sino de un puntero asociado al identificador del campo en la implementación del objeto.

Es decir, puede haber una variable local con el mismo identificador que el campo en algún método del objeto, en cuyo caso se puede utilizar para distinguir un puntero al campo del objeto de un puntero a una variable local.

¿con qué fin se podría utilizar? ¿se puede utilizar como ejemplo?
 
Barbarian2:
¿Para qué podría servir esto? ¿Puede darme un ejemplo?
Esto se utiliza más a menudo en los constructores de clases, para no inventar nuevos identificadores, porque es en los constructores donde se asignan los valores de los argumentos a los campos de los objetos.
 
Barbarian2:
¿pero para qué fines puede ser necesario? ¿puede dar un ejemplo?
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));
      }
};

En este caso, cuando se crea un LineNode, es necesario especificar el nodo padre al que pertenece la instancia actual de LineNode. El nodo padre podrá entonces referirse a esta instancia por referencia. En este ejemplo, la palabra esto se utiliza dos veces. En el primer caso, la palabra this especifica que la variable childNode se refiere específicamente a la clase actual, mientras que childNode sin this es una variable del método LinkWithNode del mismo nombre. En el segundo caso, esto devuelve la instancia actual de la clase y GetPointer recibe un puntero a ella. Esto permite vincular un LineNode en el momento de su creación.

 
C-4:

En este caso, cuando se crea un LineNode, es necesario especificar el nodo padre al que pertenece la instancia actual de LineNode. El nodo padre podrá entonces referirse a esta instancia por referencia. En este ejemplo, la palabra esto se utiliza dos veces. En el primer caso, la palabra this especifica que la variable childNode se refiere específicamente a la clase actual, mientras que childNode sin this es una variable del método LinkWithNode del mismo nombre. En el segundo caso, esto devuelve la instancia actual de la clase y GetPointer recibe un puntero a ella. Así, es posible vincular el LineNode en el momento de la creación.

Es decir, en el segundo caso, ¿se reducirá el código?
 
Barbarian2:
es decir, en el segundo caso, ¿se reducirá el código?
Sea cual sea la abreviatura (en este caso), te estás centrando en lo que no debes. El uso de esto puede ser variado. Lo importante es entender que esto es un sinónimo de la instancia del objeto donde se utiliza esto. Al definir una clase, cuando todavía no hay instancias de esto, esta es la única manera de decirle al compilador lo que el programador quiere decir.
 
Barbarian2:
es decir, en el segundo caso, ¿se reducirá el código?

No, no es eso. Esto nos permite controlar una instancia de una clase ya en su definición. Sabiendo esto, podemos imponer nuestro propio comportamiento en una instancia particular. Así se consigue un alto grado de flexibilidad y abstracción.

 

Un consejo. Estoy pasando de mql4 a 5, voy a escribir un indicador para 1000 o 10k buffers. ¿Es posible nombrar los buffers con variables?

Como

while( a<1000)

{

a++ B++

nombre del buffer = buff+a

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

Y el procesamiento posterior del buffer con el mismo bucle

O cualquier otra forma de reducir el tiempo y el código con las nuevas características de mql5.

 
Andrei-1:

En primer lugar, el límite es de 256 búferes (puedo estar equivocado).

Y los buffers están bien, puedes ponerlos en clases, darles alias y buscar por alias.

 
Gracias, lo investigaremos.
 
Andrei-1:

En algún lugar de los artículos tol64 vio, no puedo recordar a simple vista, buscarlo.

TheXpert:

En primer lugar, el límite es de 256 búferes (puedo estar equivocado).

Y todo está bien con los buffers, puedes ponerlos en clases, darles alias y buscar por alias.

No hay ninguna restricción en la ayuda"El número de topes de indicadores que puede utilizar en un indicador personalizado no está limitado. ", pero mencionó el 512 en alguna parte, así que no lo sé.