Hatalar, hatalar, sorular - sayfa 2839

 

Aylık ve haftalık bir zaman dilimine sahip bir grafikte (özellikle EURUSD), artı işareti imleçten sonra çok yavaş hareket eder - yeniden oluşturmak için imleci çapraz olarak yumuşak bir şekilde hareket ettirmek yeterlidir. Diğer zaman dilimlerinde sorun yok. Daha önce hiç böyle bir gecikme olmamıştı.


 
A100 :
Yürütme sırasında hata:

Sonuç: 1-2-2-0-0-0

Beklenen: 1-2-0-0

C++'daki gibi. Ek olarak, aynı sözdizimi bekleniyordu: cast, bir kurucu çağrısı değil, bir dökümdür

Evet, her şey doğru görünüyor. Sadece move yapıcısı muhtemelen orada çağrılır, MQL'de kopyalama ile değiştirilir.
Ve oyuncu seçimi (A)a1 gibidir
 
Alexey Navoykov :
Evet, bence bu doğru görünüyor. Muhtemelen orada, MQL'de kopyalama ile değiştirilen move yapıcısı da deniyor.
Ve oyuncu seçimi (A)a1 gibidir

(A) a1 veya A (a1) tipi döküm A a1 bir döküm değil, dock'taki gibi bir tip bildirimidir. Parantez ile bekleyin olsa da, bir şeyler doğru değil. Dil için tek bir biçim gereklidir.

 
Valeriy Yastremskiy :

(A) a1 veya A (a1) tipi döküm A a1 bir döküm değil, dock'taki gibi bir tip bildirimidir. Parantez ile bekleyin olsa da, bir şeyler doğru değil. Dil için tek bir biçim gereklidir.

Buradaki fark, artılarda (A) a1'in nesnenin bir kopyasını yayınlamak anlamına gelmesidir. Ve MQL'de - bağlantı dökümü. Bu, uyumluluk sorunlarına yol açabilir.
Onlardan uzun zamandır profesyonellerde olduğu gibi referansı eklemelerini istiyordum: (A&)a1, ama şimdi muhtemelen hiçbir şeyi değiştirmeyecekler.
 
Alexey Navoykov :
Buradaki fark, artılarda (A) a1'in nesnenin bir kopyasını yayınlamak anlamına gelmesidir. Ve MQL'de - bağlantı dökümü. Bu, uyumluluk sorunlarına yol açabilir.
Onlardan uzun zamandır profesyonellerde olduğu gibi referansı eklemelerini istiyordum: (A&)a1, ama şimdi muhtemelen hiçbir şeyi değiştirmeyecekler.

Değil si değil python) arasında bir şey. ATP, bilmiyordu, bir cismin tipini döküm olduğuna inanıyordu. kaydediliyor.)

 
Alexey Navoykov :
Evet, her şey doğru görünüyor. Sadece move yapıcısı muhtemelen orada çağrılır, MQL'de kopyalama ile değiştirilir.
Ve oyuncu seçimi (A)a1 gibidir

Her şeyin doğru olduğundan şüpheliyim, çünkü diyelim ki:

 class A {
public :
         virtual void f() { Print ( 1 ); }
};
class B : public A {
public :
         virtual void g() { ((A)this).f(); }
};
class C : public B {
public :
         virtual void f() { Print ( 3 ); }
};
void OnStart ()
{
        B *b = new C;
        b.g();
}

MQL'de Sonuç : 3

, ve C++'da: 1

Her durumda kontrol edelim

 
A100 :

Her şeyin doğru olduğundan şüpheliyim, çünkü diyelim ki:

MQL'de Sonuç : 3

, ve C++'da: 1

Her durumda kontrol edelim

Yani bu tam olarak yukarıda tarif ettiğim durum.
 
A100 :

Her şeyin doğru olduğundan şüpheliyim, çünkü diyelim ki:

MQL'de Sonuç : 3

, ve C++'da: 1

Her durumda kontrol edelim

MQL kodunu C++ ile yorumlarken bu kadar net olmazdım.
C++ kodu (çevrimiçi: https://onlinegdb.com/Hy1FIj9Qv ):

 class A {
public :
         virtual void f() { printf ( "1" ); }
};
class B : public A {
public :
         virtual void g_ptr() { ((A*)( this ))->f(); }   //3
         virtual void g_ref() { ((A&)(* this )).f(); }   //3
         virtual void g_cast() { ((A)(* this )).f(); }   //1
};
class C : public B {
public :
         virtual void f() { printf ( "3" ); }
};
void OnStart ()
{
        B *b = new C;
        b->g_ptr();
        b->g_ref();
        b->g_cast();
}

int main()
{
     OnStart ();
     return 0 ;
}
 
Sergey Dzyublik :

MQL kodunu C++ ile yorumlarken bu kadar net olmazdım.
C++ kodu (çevrimiçi: https://onlinegdb.com/Hy1FIj9Qv ):

Ve g_cast'in 3. varyantını MQL'de nasıl yazmayı öneriyorsunuz?

 
A100 :

Ve g_cast'in 3. varyantını MQL'de nasıl yazmayı öneriyorsunuz?

Temel sınıftan bir işlevi açıkça çağırabilirsiniz :

 class A {
public :
         virtual void f() { Print ( 1 ); }
};
class B : public A {
public :
         virtual void g() { this .A::f(); }   //1
};
class C : public B {
public :
         virtual void f() { Print ( 3 ); }
};
void OnStart ()
{
        B *b = new C;
        b.g();
}