Hatalar, hatalar, sorular - sayfa 2680

 
Koldun Zloy :

Burada da her şey doğru.

yanlış!

VS2019'da özel olarak test edilmiştir:

 class A
    {
         private int f1() { return 1 ; }
         private int f2() { return 2 ; }
         public int   f( int v) { const int a = f1(); const int b = f2(); return (v + a + b); }
    }

Hata CS0133 "a"ya atanan ifade sabit bir ifade olmalıdır. ConsoleApp2 ..\repos\ConsoleApp2\ConsoleApp2\Program.cs on üç Aktif

Hata CS0133 "b"ye atanan ifade sabit bir ifade olmalıdır. ConsoleApp2 ..\repos\ConsoleApp2\ConsoleApp2\Program.cs on üç Aktif

[Silindi]  
Igor Makanu :

geçen yıl yanlış çalıştı - özel olarak test edilmiş const değiştiricileri

ve görünüşe göre @Ilyas MQL programının nasıl başlatıldığını açıkladı, önce tüm const ve static, nerede tanımlandıklarına bakılmaksızın başlatılır, ardından sınıf kurucuları çağrılır

tamam, bu statik / const başlatma ile - yine de doğru şekilde dağıtılabilir, ancak burada const değiştiricisinin derleyicinin kontrol edeceğini garanti etmediği gerçeği - çok beklenmedik - ikinci örneğim

Her iki örneğinizde de her şey doğru ve beklendiği gibi çalışıyor.

 
Koldun Zloy :

Her iki örneğinizde de her şey doğru ve beklendiği gibi çalışıyor.

const değiştiricisinin, derleyicinin derlerken benim hatamı bulacağından %99 emin olması bekleniyor, VS2019 bunu yapıyor, MQL yapmıyor

[Silindi]  
Igor Makanu :

const değiştiricisinin, derleyicinin derlerken benim hatamı bulacağından %99 emin olması bekleniyor, VS2019 bunu yapıyor, MQL yapmıyor

Tam olarak neyin yanlış olduğunu düşünüyorsun?

VS2019 bana herhangi bir hata vermiyor.

 
Igor Makanu :

geçen yıl yanlış çalıştı - özel olarak test edilmiş const değiştiricileri

ve görünüşe göre @Ilyas MQL programının nasıl başlatıldığını açıkladı, önce tüm const ve static, nerede tanımlandıklarına bakılmaksızın başlatılır, ardından sınıf kurucuları çağrılır

Görünüşe göre const/static değiştiricileri olan global değişkenlerle ilgiliydi ve yerel olanları kullanıyorsunuz.

 
Koldun Zloy :

Tam olarak neyin yanlış olduğunu düşünüyorsun?

VS2019 bana herhangi bir hata vermiyor.

MQL derleyicisinin belirsiz ifadelerin kullanımına izin verdiği bir hata, bir const değiştirici varsa, bu bir sabittir

derleyici aynı kodu izlemedi mi? ve başka bir durumu takip ettim

Vurgulanan her şeyi derlemeden hemen önce VS2019'da Sharpe

 class A{
public :
   int ivalue;
   int inc() const { static int v = 0 ; return (++v);}
   A():ivalue( 0 ){}
};

class B{
public :
   int ivalue;
   int inc(){ return (++ivalue);}
   B():ivalue( 0 ){}
};

//+------------------------------------------------------------------+
void OnStart ()
{
   const A a;
   Print (a.inc());  
   B b1;
   Print (b1.inc());
   const B b2;
   Print (b2.inc()); // 'inc' - call non-const method for constant object
}
//+------------------------------------------------------------------+
Sergey Dzyublik :

Görünüşe göre const/static değiştiricileri olan global değişkenlerle ilgiliydi ve yerel olanları kullanıyorsunuz.

karışık olabilir, ancak const değiştiricisinin davranışı C#'dan çok farklıdır

[Silindi]  

const değiştiricisi ile bildirilen bir değişken değiştirilemez. Derleyici bunun kaydını tutar.

Muhtemelen ondan farklı bir şey bekliyorsunuz.

 
Koldun Zloy :

Muhtemelen ondan farklı bir şey bekliyorsunuz.

görünüşe göre evet, MQL ve C# arasında geçiş yaparken her şeyin aynı olmasını bekliyorum, tamam hadi gidelim

[Silindi]  

2366'yı inşa et

 namespace X
{

class A
{
public :
   A(){}
};

}   //  namespace X

class B : public X::A
{
public :
   B() : X::A()  // 'X' - struct member undefined
   {
   }
};
 
Ilyas :

Mesaj için teşekkürler, kontrol edeceğim

mq5 - normal. mq4 - bozuk. TypeToBytes_ExampleScript.mq4'ü buradan alabilirsiniz. Yalnızca uzantı mq5 olarak değiştirilirse derlenir.