Hatalar, hatalar, sorular - sayfa 1991

 
Alexey Kozitsyn :
Yapıya varsayılan bir kurucu ekleyin.

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

fxsaber , 2017.09.06 09:38

 // Нужен только для того, чтобы показать необходимость решения без конструктора
union UNION
{
  STRUCT Struct; // конструктора не должно быть
   int i;
};
 
fxsaber :

Dikkatsizim :) Bunun neden gerekli olduğunu açıklayabilir misiniz? Neden bir kurucu kullanamıyorsun?

Yoksa özel bir alanla bir yapı başlatma hatası göstermek mi?

 
Alexey Kozitsyn :

Dikkatsizim :) Bunun neden gerekli olduğunu açıklayabilir misiniz? Neden bir kurucu kullanamıyorsun?

Çünkü kodumu yazarken tam olarak yapımın birliğe dahil olduğu durumla karşılaştım. Boş bir kurucu ile çözüm hemen akla geldi, ancak kodda bir birlik olduğu konusunda bir serseri vardı. Bu nedenle, soruyu sıkıcılık için değil, pratik uygulama için soruyorum.


Bu "hatayı" aşmak için böyle bir sapkınlık yazmam gerekti (bu bir hata mı, değil mi?)

 // Зануляем структуру без конструктора со скрытыми полями
template < typename T>
void StructToNull( T& Struct )
{    
  union TMP_UNION
  {
    T Struct;
    
     struct TMP_STRUCT
    {
       uchar Array[ sizeof (T)];
    } Tmp;
    
    TMP_UNION( T& Value )
    {
      :: ArrayInitialize ( this .Tmp.Array, 0 );
      
      Value = this .Struct;
    }
  } TmpUnion(Struct);    
}


Henüz başka bir çözüm görmedim.

 
fxsaber :
Başlatıldı, sorunu gördüm. Görünüşe göre sendikaların artık sadece kamu alanları olan yapıları kullanmasına izin veriliyor. O zaman struct = {0} yazmak mümkün olacaktır;
 
Alexey Kozitsyn :
Başlatıldı, sorunu gördüm. Görünüşe göre sendikaların şu anda yalnızca kamu alanları olan yapıları kullanmasına izin veriliyor . O zaman struct = {0} yazmak mümkün olacaktır;

değil .

 
fxsaber :

değil .

Belki seni yine yanlış anladım, ama bu kod uyarı vermeden çalışıyor:

 struct STRUCT
{
//private:
   int i;

};

// Нужен только для того, чтобы показать необходимость решения без конструктора
union UNION
{
  STRUCT Struct; // конструктора не должно быть
   int i;
};

// Обходим Warning "possible use of uninitialized variable"
template < typename T>
void StructInit( T& ) {}

STRUCT Func()
{
  STRUCT Res = { 0 }; // ок!
  
//  StructInit(Res); // с этой строкой Warning не появляется, но это какой-то абсурд!
  
   return (Res);  
}

void OnStart ()
{
  Func();
}
 
Alexey Kozitsyn :

Belki seni yine yanlış anladım, ama bu kod uyarı vermeden çalışıyor:

Bu doğru, kamu yapıları başlatıldı. Ama sendikanın bununla hiçbir ilgisi yok.


İlginçtir ki, gizli alanı olan bir yapı, yeni bir yapının genel alanı yapılırsa, tüm alanları açık olmasına rağmen yenisi başlatılmayacak.

 

Merhaba! Söylesene, içindeki öğelerin sayısını bir değişken aracılığıyla gösteren bir dizi bildirmek mümkün müdür? Değilse, bu görev nasıl gerçekleştirilebilir?

 extern int Period = 10 ;
int Massiv[ Period ]; //Выдаёт ошибку: "invalid index value"
 
giros :

Merhaba! Söylesene, içindeki öğelerin sayısını bir değişken aracılığıyla gösteren bir dizi bildirmek mümkün müdür? Değilse, bu görev nasıl gerçekleştirilebilir?

https://www.mql5.com/ru/docs/array/arrayresize

Документация по MQL5: Операции с массивами / ArrayResize
Документация по MQL5: Операции с массивами / ArrayResize
  • www.mql5.com
Операции с массивами / ArrayResize - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
giros :

Merhaba! Söylesene, içindeki öğelerin sayısını bir değişken aracılığıyla gösteren bir dizi bildirmek mümkün müdür? Değilse, bu görev nasıl gerçekleştirilebilir?


DiziYeniden Boyutlandır()