Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 179

 
Reshetov :

bu, kendisine bir işaretçi değil, nesnenin uygulamasında bir alan tanımlayıcısı ile ilişkili bir işaretçidir.

Onlar. nesnenin bazı yöntemlerinde, alanla aynı tanımlayıcıya sahip yerel bir değişken olabilir ve bu durumda, bunu kullanarak nesnenin alanına işaretçiyi, işaretçiden yerel değişkene ayırabilirsiniz.

ve hangi amaçlar için gerekli olabilir? buna örnek olabilir mi?
 
Barbarian2 :
ve hangi amaçlar için gerekli olabilir? buna örnek olabilir mi?
Bu, yeni tanımlayıcılar icat etmekten kaçınmak için en sık sınıf kurucularında kullanılır, çünkü yapıcılarda argümanların değerleri bir nesnenin alanlarına atanır.
 
Barbarian2 :
ve hangi amaçlar için gerekli olabilir? buna örnek olabilir mi?
 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 ));
      }
};

Bu durumda, bir LineNode oluştururken, mevcut LineNode örneğine sahip olacak üst düğümü belirtmeniz gerekir. Bundan sonra, üst düğüm bu örneğe referans vererek erişebilecektir. Bu örnekte, this kelimesi iki kez kullanılmıştır. İlk durumda, this sözcüğü, childNode değişkeninin özellikle geçerli sınıfa atıfta bulunduğunu belirtirken, bu olmayan childNode, LinkWithNode yönteminde aynı adı taşıyan değişkendir. İkinci durumda, bu, sınıfın geçerli örneğini döndürür ve GetPointer ona bir işaretçi alır . Böylece, oluşturma anında bir LineNode'u bağlamak mümkün hale gelir.

 
C-4 :

Bu durumda, bir LineNode oluştururken, mevcut LineNode örneğine sahip olacak üst düğümü belirtmeniz gerekir. Bundan sonra, üst düğüm bu örneğe referans vererek erişebilecektir. Bu örnekte, this kelimesi iki kez kullanılmıştır. İlk durumda, this sözcüğü, childNode değişkeninin özellikle geçerli sınıfa atıfta bulunduğunu belirtirken, bu olmayan childNode, LinkWithNode yönteminde aynı adı taşıyan değişkendir. İkinci durumda, bu, sınıfın geçerli örneğini döndürür ve GetPointer ona bir işaretçi alır. Böylece, oluşturma anında bir LineNode'u bağlamak mümkün hale gelir.

onlar. ikinci durumda kodun kısalmasına neden olur mu?
 
Barbarian2 :
onlar. ikinci durumda kodun kısalmasına neden olur mu?
Evet, azalma umurumda değil (bu durumda). Buna konsantre değilsin. Bunun kullanımı çeşitlendirilebilir. Bunun (bunun) kullanıldığı nesnenin örneğiyle eşanlamlı olduğunu anlamak önemlidir. Henüz örnek yokken bir sınıfı tanımlarken, derleyiciye programcının aklında ne olduğunu söylemenin tek yolu budur.
 
Barbarian2 :
onlar. ikinci durumda kodun kısalmasına neden olur mu?

Hayır, mesele bu değil. bu, zaten tanımında bulunan bir sınıfın örneğini yönetmenize olanak tanır. Bunu bilerek, benzersiz davranışımızı belirli bir örneğe empoze edebiliriz. Bu, yüksek derecede esneklik ve soyutlama sağlar.

 

Söylemek. mql4'ten 5'e geçiyorum, 1000 veya 10k tamponlar için bir gösterge yazacağım . Tamponların adını değişkenlere ayarlama fırsatı olup olmadığı.

Beğenmek

süre(a<1000)

{

a++B++

arabellek adı = arabellek+a

tampon(a)=iMA(boş, B,) }

Ve aynı döngü ile şamandıraların sonraki işlenmesi

Veya mql5'in yeni özellikleriyle zamanı ve kodu başka nasıl azaltabilirsiniz.

 
Andrei-1 :

Öncelikle 256 buffer gibi bir limit (yanılıyor olabilirim)

Ve arabelleklerde her şey yolunda, onları sınıflara sokabilir, takma adlar verebilir ve takma adlara göre arama yapabilirsiniz.

 
Teşekkürler, çalışacağız.
 
Andrei-1 :

Tol64'teki yazılarda bir yerde gördüm, önceden hatırlamıyorum, bak.

TheXpert :

Öncelikle 256 buffer gibi bir limit (yanılıyor olabilirim)

Ve arabelleklerde her şey yolunda, onları sınıflara sokabilir, takma adlar verebilir ve takma adlara göre arama yapabilirsiniz.

Yardımda sınır yoktur " Özel bir göstergede kullanılabilecek gösterge arabelleklerinin sayısı sınırlı değildir. ", ancak bir yerde 512 yanıp söndü, yani xs.