MQL5'te OOP hakkında sorular - sayfa 81

 

döküm hakkında başka bir soru

bu kod var:

 struct SHash
   {
       ulong hash[ 2 ];
      SHash()                                {  }
      SHash( const double )                    { ArrayInitialize (hash, 0xAAAAAAAAAAAAAAAA );                }
      SHash( const SHash &val)                { ArrayCopy (hash, val.hash);                                }
       bool operator ==( const SHash &val) const { return (hash[ 0 ] == val.hash[ 0 ] && hash[ 1 ] == val.hash[ 1 ]); }
   };
//+------------------------------------------------------------------+
class BASE
{
private :
   const SHash _hash;
protected :
   BASE(SHash &hash): _hash(hash)             {  }
};

class A:BASE
{
public :
   A(SHash &hash):BASE(hash)                 {  }
};


class B:BASE
{
public :
   B():BASE((SHash) 0.0 )                      {  }
};

//+------------------------------------------------------------------+
void OnStart ()
{
   SHash h( 0.0 );
   A a(h);
}
//+------------------------------------------------------------------+

ve B sınıfını parametresiz bir kurucu ile başlatmak istiyorum, ancak SHash yapısını SHash(const double) kurucusuna çeviremiyorum

onlar. biraz döküm (SHash) çiftine ihtiyaç var

örneğimde derleyici hatası: '(SHash)' - geçersiz yayın işlemi


eğer böyle yazılırsa:

 class B:BASE
{
public :
   B():BASE( 0.0 )                      {  }
};
hata: '0.0' - parametre referans olarak iletildi, değişken bekleniyor

 
Igor Makanu :

döküm hakkında başka bir soru

bu kod var:

ve B sınıfını parametresiz bir kurucu ile başlatmak istiyorum, ancak SHash yapısını SHash(const double) kurucusuna çeviremiyorum

onlar. biraz döküm (SHash) çiftine ihtiyaç var

örneğimde derleyici hatası: '(SHash)' - geçersiz yayın işlemi


eğer böyle yazılırsa:

hata: '0.0' - parametre referans olarak iletildi, değişken bekleniyor

class B:BASE
{
public :
   B():BASE(SHash())                      {  }
};
 
Vladimir Simakov :

işte böyle çalışır

ancak SHash yapısı için 0xAAAAAAAAAAAAAAA başlatma gereklidir - bu biraz NULL - test dizesinden elde edilemeyen bir MD5 karması (kontrol edildi)

SHash() yapıcısına şimdi ihtiyaç duyulmuyor gibi görünüyor, ancak birkaç gün önce gerekli görünüyordu))), yani. İlk başta sahip değildim, sonra bir yerde bu boş kurucu ile derleme hatasını düzelttim, ya yapıları karşılaştırırken ya da başlatma sırasında ... genel olarak, buna ihtiyaç duyulacak gibi görünüyor .... tüm değişkenleri başlatmak için iyi bir kural gibi ....

genel olarak, hala bir seçenek veya açık bir seçenek olurdu - hayır)))

 
Igor Makanu :

işte böyle çalışır

ancak SHash yapısı için 0xAAAAAAAAAAAAAAA başlatma gereklidir - bu biraz NULL - test dizesinden elde edilemeyen bir MD5 karması (kontrol edildi)

SHash() yapıcısına şimdi ihtiyaç duyulmuyor gibi görünüyor, ancak birkaç gün önce gerekli görünüyordu))), yani. İlk başta sahip değildim, sonra bir yerde bu boş kurucu ile derleme hatasını düzelttim, ya yapıları karşılaştırırken ya da başlatma sırasında ... genel olarak, buna ihtiyaç duyulacak gibi görünüyor .... tüm değişkenleri başlatmak için iyi bir kural gibi ....

genel olarak, hala bir seçenek veya açık bir seçenek olurdu - hayır)))

SHash(0.0)

, ve kendini tahmin et?)))

 
Vladimir Simakov :

, ve kendini tahmin et?)))

SHash(( double )x)
 
Vladimir Simakov :

, ve kendini tahmin et?)))

 class B:BASE
{
public :
   B():BASE(SHash( 0.0 ))                      {  }
};

lanet olsun işe yarıyor!

Onu da denedim, neden işe yaramadığını anlamıyorum.

teşekkür etmek!

iyice batırdı (((

 
Alexandr Andreev :

Evet, ama sınıf yapıcısında x'i nereden buluyorsunuz?)))

 
Vladimir Simakov :

Evet, ama sınıf yapıcısında x'i nereden buluyorsunuz?)))

nokta x değil) ancak resepsiyonda çiftin yanı sıra bir şamandıra olabileceği gerçeği, sadece 0.0'ı belirtin Ayrıca güvenilir değil

 
Alexandr Andreev :

nokta x değil) ancak resepsiyonda çiftin yanı sıra bir şamandıra olabileceği gerçeği, sadece 0.0'ı belirtin Ayrıca güvenilir değil

tüm bunlar böyle ayrıntılar olsa da ... çok önemli değil

 
Alexandr Andreev :

nokta x değil) ancak resepsiyonda çiftin yanı sıra bir şamandıra olabileceği gerçeği, sadece 0.0'ı belirtin Ayrıca güvenilir değil

int bu özel kurucuyu çağırmak için herhangi bir sayı olmasına rağmen, neyin başlatılacağının bir anlamı yoktur.

ve 0.0, yazım hatası olmaması için seçildi - herhangi bir sayı, yani. 0.0. yazmak ve yazmak 123'ten daha zordur