Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 179

 
Reshetov:

Questo non è un puntatore a se stesso, ma un puntatore associato all'identificatore di campo nell'implementazione dell'oggetto.

Cioè ci può essere una variabile locale con lo stesso identificatore del campo in qualche metodo dell'oggetto, nel qual caso si può usare questo per distinguere un puntatore al campo dell'oggetto da un puntatore a una variabile locale.

per quale scopo potrebbe essere usato? puoi usarlo come esempio?
 
Barbarian2:
Per quale scopo potrebbe essere usato, mi può fare un esempio?
Questo è usato più spesso nei costruttori di classi, per non creare nuovi identificatori, perché è nei costruttori che i valori degli argomenti sono assegnati ai campi dell'oggetto.
 
Barbarian2:
E per quali scopi questo può essere necessario? Può fare un esempio?
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 questo caso, quando si crea un LineNode, è necessario specificare il nodo padre a cui appartiene l'istanza corrente di LineNode. Il nodo padre sarà quindi in grado di fare riferimento a questa istanza per riferimento. In questo esempio, la parola this è usata due volte. Nel primo caso, la parola this specifica che la variabile childNode si riferisce specificamente alla classe corrente, mentre il childNode senza this è una variabile del metodo LinkWithNode con lo stesso nome. Nel secondo caso, questo restituisce l'istanza corrente della classe e GetPointer riceve un puntatore ad essa. Questo permette di legare un LineNode al momento della creazione.

 
C-4:

In questo caso, quando si crea un LineNode, è necessario specificare il nodo padre a cui appartiene l'istanza corrente di LineNode. Il nodo padre sarà quindi in grado di fare riferimento a questa istanza per riferimento. In questo esempio, la parola this è usata due volte. Nel primo caso, la parola this specifica che la variabile childNode si riferisce specificamente alla classe corrente, mentre il childNode senza this è una variabile del metodo LinkWithNode con lo stesso nome. Nel secondo caso, questo restituisce l'istanza corrente della classe e GetPointer riceve un puntatore ad essa. Così è possibile legare LineNode al momento della creazione.

cioè nel secondo caso porterà alla riduzione del codice?
 
Barbarian2:
cioè nel secondo caso, porterà alla riduzione del codice?
Qualunque sia l'abbreviazione (in questo caso), ti stai concentrando sulla cosa sbagliata. L'uso di questo può essere vario. La cosa importante è capire che questo è un sinonimo per l'istanza dell'oggetto in cui questo è usato. Quando si definisce una classe, quando non ci sono ancora istanze di questo, questo è l'unico modo per dire al compilatore cosa intende il programmatore.
 
Barbarian2:
cioè nel secondo caso, porterà alla riduzione del codice?

No, non è questo. Questo ci permette di controllare un'istanza di una classe già nella sua definizione. Sapendo questo, possiamo imporre il nostro comportamento unico su una particolare istanza. Questo raggiunge un alto grado di flessibilità e astrazione.

 

Un consiglio. Sto passando da mql4 a 5, ho intenzione di scrivere un indicatore per 1000 o 10k buffer. È possibile nominare i buffer con delle variabili?

Come

mentre( a<1000)

{

a++ B++

nome del buffer = buff+a

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

E la successiva elaborazione del buffer con lo stesso looping

O qualsiasi altro modo per ridurre il tempo e il codice con le nuove caratteristiche di mql5.

 
Andrei-1:

Prima di tutto, il limite è di 256 buffer (potrei sbagliarmi).

E i buffer sono OK, puoi metterli in classi, dare alias e cercare per alias.

 
Grazie, lo esamineremo.
 
Andrei-1:

Da qualche parte in articoli tol64 visto, non riesco a ricordare a colpo d'occhio, cercare.

TheXpert:

Prima di tutto, il limite è di 256 buffer (potrei sbagliarmi).

E tutto è a posto con i buffer, potete metterli in classi, dar loro degli alias e cercare per alias.

Non c'è nessuna restrizione nell'aiuto"Il numero di buffer di indicatori che puoi usare in un indicatore personalizzato non è limitato. "ma ha menzionato il 512 da qualche parte, quindi non lo so.