Hatalar, hatalar, sorular - sayfa 1838

 

Bu normaldir ve kesinlikle doğrudur. Dinamik bir nesnenin dahili boyutunu (yük olmadan) istediniz.

Dinamik nesneler için ArraySize kullanın ve statik nesneler için yalnızca sizeof kullanın. Sizeof, derleme zamanında kabul edilir ve her zaman bir sabittir.

 
Renat Fatkhullin :

Bu normaldir ve kesinlikle doğrudur.

Dinamik nesneler için ArraySize kullanın ve statik nesneler için yalnızca sizeof kullanın.

Teşekkür ederim! Lütfen Sertifikayı bu tavsiyeye uygun olarak getiriniz.
 

Belgeleri sonuna kadar okuyun

Вычисления размера происходит на этапе компиляции.

 

Çok aptalca yardım istiyorum. Açıklamak için bu senaryoyu yazdım.

 struct STRUCT 
{
   int a;
};

class CLASS
{
public :
   int a;
};

STRUCT f1()
{  
   static int i = 0 ;
  
  STRUCT Res;
  
  Res.a = i++;   
  
   return (Res);
}

CLASS* f2()
{
   static int i = 0 ;
  
  CLASS* Res = new CLASS;
  
  Res.a = i++;
  
   return (Res);
}

void OnStart ()
{
   int i1 = f1().a + f1().a;  
   int i2 = f2().a + f2().a;
}

Bir yapı var ve buna benzer bir sınıf var. Benzer bir i1 hesaplaması devam ederken yapı nesnelerinde olduğu gibi, i2'nin hesaplanmasından sonra, karşılık gelen sınıf nesnelerinin kendiliğinden silinmesine ihtiyacım var. Bu nasıl kontrol edilir?

 

fxsaber :

Bu nasıl kontrol edilir?

Akıllı bir işaretçiye sarın, mql kullanılarak yapılıp yapılamayacağından emin değilsiniz
 
Комбинатор :
Akıllı bir işaretçiye sarın, mql kullanılarak yapılıp yapılamayacağından emin değilsiniz
Sorunun kendisi, karmaşık bir yapıyı geri getirmenin imkansızlığı nedeniyle ortaya çıktı. Örneğin yukarıdaki kodda int a yerine ise; bir dizi yap; , sonra f1() dönüşte bozulur. Bu nedenle, bakış sınıflara düştü, ancak açıklanan pusu orada bekliyordu.
 

Genel olarak, kopya oluşturucuyu ve işleci = geçersiz kılabilirsiniz.

Sınıflar için bu işe yaramayacak, yalnızca bir işaretçi tarafından döndürülmeleri gerekiyor gibi görünüyor, yapılar değere göre olabilir.

 
Комбинатор :

Genel olarak, kopya oluşturucuyu ve işleci = geçersiz kılabilirsiniz.

Sınıflar için bu işe yaramayacak, yalnızca bir işaretçi tarafından döndürülmeleri gerekiyor gibi görünüyor, yapılar değere göre olabilir.

Peki, teşekkürler! Yakın zamanda kaldırılan kısıtlama nedeniyle bu karardan vazgeçtim. şimdi saban
 struct STRUCT
{
   string Str;

   template < typename T>
   void operator =( const T Value )
  {
     Print ( __FUNCTION__ );
  }
  
   void operator =( const STRUCT &Struct )
  {
     this .Str = Struct.Str;
  }
};

STRUCT f()
{
  STRUCT Res;
  
   return (Res);
}

void OnStart ()
{
  f() = 1 ;
}
 

Danışmanı optimize ederken aşağıdaki hata çıkıyor

genetik geçiş (0, 3) 0:37:20.429 + geçmiş senkronizasyonunda "OnTimer işlevinde kritik çalışma zamanı hatası 512 (uyku işlevi testin sonuna ulaşır)" hatasıyla test edildi 0:00:43.395

Tek test hatasız geçer.

MT5 ve MetaEditor 1571 için sürüm.

 
pivomoe :

Danışmanı optimize ederken aşağıdaki hata çıkıyor

genetik geçiş (0, 3) 0:37:20.429 + geçmiş senkronizasyonunda "OnTimer işlevinde kritik çalışma zamanı hatası 512 (uyku işlevi testin sonuna ulaşır)" hatasıyla test edildi 0:00:43.395

Hatanın yeniden oluşturulabilmesi için danışmandan maksimumu atın. Ve kodun geri kalanını gönderin.