Hatalar, hatalar, sorular - sayfa 1696

 
Stanislav Korotky :

İlk olarak, bir yöntemi sanal olarak ilan etme girişimi olup olmadığı açık değildir. Sanal olması gerekiyorsa, türetilmiş sınıfta değil, temel sınıfta virtual yazın (aksi takdirde temel işaretçiler, türetilmiş sınıfın bir örneğini içine koysanız bile temel yönteme çözümlenir).

Türetilmiş bir sınıfta bir yöntemi geçersiz kılmak istemiyorsanız, bundan hiç bahsetmenize gerek yoktur ve eğer yaptıysanız, o zaman bir gövde ile bir geçersiz kılma olmalıdır.

Son olarak, bir alt sınıftan bir yöntemi gizlemek için, bu yöntemin özel alana taşındığı veya tabanda hemen özel hale getirildiği bir ara sınıf tanıtmanız gerekir (ama o zaman neden sanaldır?).

İşte bir örnek

 //+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class roditel
  {
public :

   virtual int one( void )
     {
       return 1 ;
     }
   virtual int two( void )
     {
       return 2 ;
     }
   virtual int three( void )
     {
       return 3 ;
     }
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class naslednic_1 : public roditel
  {
public :
   virtual int        two( void );
   virtual int        three( void );
  };

naslednic_1 go;
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
   go.two();
// 'two' - function must have a body    TEst.mq4        42      7
  }
//+------------------------------------------------------------------+
 
Vladimir Pastushak :

İşte bir örnek

Bu örnek, ilki ile hemen hemen aynıdır ;-). E-postam yeniden alıntılandı, ancak okunmadı mı? Variste yöntemleri yeni bir şekilde ilan ederek, ancak tanımlamadan ne elde etmek istiyorsunuz? Temel uygulamayı yeni bir tane olmadan çağırmak için, halefte bunlardan bahsetmeniz gerekmez.
 
Stanislav Korotky :
Bu örnek, ilki ile hemen hemen aynıdır ;-). E-postam yeniden alıntılandı, ancak okunmadı mı? Variste yöntemleri yeni bir şekilde ilan ederek, ancak tanımlamadan ne elde etmek istiyorsunuz? Temel uygulamayı yeni bir tane olmadan çağırmak için, halefte bunlardan bahsetmeniz gerekmez.

Ebeveynde 200 yöntem var, üst sınıftan 10 yönteme dayalı olarak, daha sonraki çalışmalarda bir alt sınıf oluşturulur, sadece 10 miras alınan yöntemi ve alt sınıfta oluşturulanları görmek istiyorum, başka 190 yönteme ihtiyacım yok bu, mevcut çocukla hiçbir şekilde ilgili olmamalıdır.

Örneğin, şekillerin, genişlik, yükseklik, açılar, yarıçaplar, renkler, alan özelliklerini tanımlayan bir temel sınıf vardır, tüm maksimum özellikler açıklanmıştır.

Bu özellik yöntemlerine dayanarak, üst sınıftan, yarıçaptan, renkten, alandan yöntemleri kullandığım daireye bir sınıf varisi yapıyorum ... Ama burada köşelere ve genişliğe ihtiyacım yok ...

Bu özellik yöntemlerine dayanarak, ana sınıftan, renkten, alandan, açılardan yöntemleri kullandığım bir sınıf varis üçgeni yapıyorum ... Ama burada bir yarıçapa ihtiyacım yok ...

Bunun neden böyle olduğu sorulduğunda, ana sınıfın tümü için ortak olan veya bir grup şekil için ortak olan bir yöntem grubu vardır, örneğin renk yöntemi, stil.

 
Vladimir Pastushak :

Ebeveynde 200 yöntem var, üst sınıftan 10 yönteme dayalı olarak, daha sonraki çalışmalarda bir alt sınıf oluşturulur, sadece 10 miras alınan yöntemi ve alt sınıfta oluşturulanları görmek istiyorum, başka 190 yönteme ihtiyacım yok bu, mevcut çocukla hiçbir şekilde ilgili olmamalıdır.

Örneğin, şekillerin, genişlik, yükseklik, açılar, yarıçaplar, renkler, alan özelliklerini tanımlayan bir temel sınıf vardır, tüm maksimum özellikler açıklanmıştır.

Bu özellik yöntemlerine dayanarak, üst sınıftan, yarıçaptan, renkten, alandan yöntemleri kullandığım daireye bir sınıf varisi yapıyorum ... Ama burada köşelere ve genişliğe ihtiyacım yok ...

Bu özellik yöntemlerine dayanarak, ana sınıftan, renkten, alandan, açılardan yöntemleri kullandığım bir sınıf varis üçgeni yapıyorum ... Ama burada bir yarıçapa ihtiyacım yok ...

Bunun neden böyle olduğu sorulduğunda, ana sınıfın tümü için ortak olan veya bir grup şekil için ortak olan bir yöntem grubu vardır, örneğin renk yöntemi, stil.

Anlamıyorum: bu soru bir soru mu yoksa bitmemiş bir cevap mı? Genellikle bunu yaparlar - temel sınıfta genel ve daha sonra torunlarda ayrıntılar eklerler. Neden tersini yapsın? Amaç ne?

Ancak derine inmeseniz bile, zaten bir seçenek önerdim - tüm gereksiz özelliklerin ve yöntemlerin özel bölüme taşındığı bir ara halef eklemek.

 
Yönetime soru, hizmetlere ilişkin yeni güncel istatistikleri ne zaman görmek mümkün olacak?
 
Vladimir Pastushak :

Ebeveynde 200 yöntem var, üst sınıftan 10 yönteme dayalı olarak, daha sonraki çalışmalarda bir alt sınıf oluşturulur, sadece 10 miras alınan yöntemi ve alt sınıfta oluşturulanları görmek istiyorum, başka 190 yönteme ihtiyacım yok bu, mevcut çocukla hiçbir şekilde ilgili olmamalıdır.

Bunu yapmak için, mirasın korumalı veya özel olduğunu bildirmeniz gerekir. Ve sonra ihtiyacınız olan yöntemleri geçersiz kılın.

 class naslednic_1 : protected roditel
  {
public :
   virtual int        two( void )   { return roditel::two(); }
   virtual int        three( void ) { return roditel::three(); }
  };
 
Alexey Navoykov :

Bunu yapmak için, mirasın korumalı veya özel olduğunu bildirmeniz gerekir. Ve sonra ihtiyacınız olan yöntemleri geçersiz kılın.

Stanislav Korotki :

Anlamıyorum: bu soru bir soru mu yoksa bitmemiş bir cevap mı? Genellikle bunu yaparlar - temel sınıfta genel ve daha sonra torunlarda ayrıntılar eklerler. Neden tersini yapsın? Amaç ne?

Ancak derine inmeseniz bile, zaten bir seçenek önerdim - tüm gereksiz özelliklerin ve yöntemlerin özel bölüme taşındığı bir ara varis eklemek.

Teşekkür ederim.

Aleksey, örneğiniz işe yaramıyor, aynı şekilde, mirasçılarda düşmemesi gereken ebeveyn yöntemleri düşüyor.


 
INDICATOR_SHORTNAME numaranızı nasıl öğrenebilirsiniz? Hiçbir göstergeGet* işlevi yoktur!
 
Alexey Kozitsyn :
Ve oluşturma sırasında kısa adı değiştirirseniz?

Ve her seferinde değiştirmek?

Gösterge gösterge arabellekleri içeriyorsa, kendini tanımlama zor değildir, ancak arabellekler olmadan henüz bir çözüm göremiyorum.

 
fxsaber :
INDICATOR_SHORTNAME numaranızı nasıl öğrenebilirsiniz? Hiçbir göstergeGet* işlevi yoktur!
Print(MQLInfoString(MQL_PROGRAM_NAME)); göstergenin kısa adını döndürür. Kısa ad verilmezse, tam ad döndürülür.