OOP, mql5'te şablonlar ve makrolar, incelikler ve kullanım teknikleri - sayfa 20

 
Makro bağımsız değişken sayısındaki 8 öğe sınırı nasıl kaldırılır, 8 öğe eksik mi?
 
Seric29 :
Makro bağımsız değişken sayısındaki 8 öğe sınırı nasıl kaldırılır, 8 öğe eksik mi?

Makro yazmak için makro.

Neden sadece fonksiyon yazmıyorsunuz?

 

Bir makro kullanarak const değiştiriciyi kaldırmak / kaldırmak mümkün müdür? ve gerektiğinde kapat?

Not: bir kod var:

 class COrder {
private :
//--- const to send order
   const int          c_cmd;
   const double       c_volume;
   double             c_price;
   const int          c_magic;
   const int          c_stoploss;
   const int          c_takeprofit;
}

dosyaya sınıf alanları yazmaya ve yapıcı aracılığıyla dosyadan geri yüklemeye karar verdi, ancak const değiştirici buna müdahale edecek

kod neredeyse bitti, teorik olarak tüm const'ı kaldırabilirim, ancak... ama belki daha fazla değişiklik olasılığını kaybetmek istemiyorum ve const kodu düzenlerken çok yardımcı oluyor

 
Igor Makanu :

Bir makro kullanarak const değiştiricisini kaldırmak / kaldırmak mümkün müdür? ve gerektiğinde kapat?

 #define const
 
fxsaber :

hm, bu kadar kolay mı?!

Ancak bu makroyu uygulamak istediğim kaynak alanı nasıl sınırlayabilirim?

 
Igor Makanu :

Ancak bu makroyu uygulamak istediğim kaynak alanı nasıl sınırlayabilirim?

 #undef const
 
Igor Makanu :

Bir makro kullanarak const değiştiriciyi kaldırmak / kaldırmak mümkün müdür? ve gerektiğinde kapat?

Not: bir kod var:

dosyaya sınıf alanları yazmaya ve yapıcı aracılığıyla dosyadan geri yüklemeye karar verdi, ancak const değiştirici buna müdahale edecek

kod neredeyse bitti, teorik olarak tüm const'ı kaldırabilirim, ancak... ama belki daha fazla değişiklik olasılığını kaybetmek istemiyorum ve const kodu düzenlerken çok yardımcı oluyor

Fikir nedir? Her yerde c_cmd bir sabittir, ancak bir fonksiyonda sabit değil midir? Eğer öyleyse, o zaman bu UB'dir (evet, bunu yapmanıza izin vermez), peki, salt okunur segmentler, derleyici optimizasyonları nedeniyle ...

 
fxsaber :

hmm yine basit

TEŞEKKÜR ETMEK!

kurban :

Fikir nedir? Her yerde c_cmd bir sabittir, ancak bir fonksiyonda sabit değil midir? Eğer öyleyse, o zaman bu UB'dir (evet, bunu yapmanıza izin vermez), peki, salt okunur segmentler, derleyici optimizasyonları nedeniyle ...

fikir icat etmek değil, en uygun çözümü, neyi ne zaman kaydedeceğimi aramaktan yoruldum - Yeni bir sipariş verirken tüm ayarları ve mevcut durumları kaydedeceğim 2 sınıfın tüm alanlarına aptalca karar verdim (çoklu -sipariş TS)


ama gece yarısı düşündüm, const'ı zaten iptal etmek istemiyorum, kaydedilen sınıfların alanlarının adlarına göre ayrı bir yapı olacak - editörde 2 dakika içinde kopyala-yapıştır))), iyi, FileWriteStruct()'a yapılan bir çağrıyla kaydetmek de uygundur

ve durumu şu yapıcı gibi bir şeyle geri yükleyeceğim:

COrder::COrder(SRecovery &property)
:  c_cmd(property.c_cmd),
   c_volume(property.c_volume),
   c_price(property.c_price),
   c_magic(property.c_magic),
   c_stoploss(property.c_stoploss),
   c_takeprofit(property.c_takeprofit)
{

}

yapıcıya böyle bir çağrı ile sabit alanları başlatabilirsiniz

veri kurtarma yalnızca terminali yeniden başlatmak için gereklidir

Henüz yapmadım, ancak her şeyin sorunsuz çalışacağından %99 eminim - tanıtmak istemediğim tek şey yeni bir veri türü (kaydetme yapısı) - ama daha kolay olacak ve ben kodu daha sonra okuyabilir .... yorumları yazmak bize düşmez)) ))

 
Igor Makanu :

hmm yine basit

TEŞEKKÜR ETMEK!

fikir icat etmek değil, en uygun çözümü, neyi ne zaman kaydedeceğimi aramaktan yoruldum - Yeni bir sipariş verirken tüm ayarları ve mevcut durumları kaydedeceğim 2 sınıfın tüm alanlarına aptalca karar verdim (çoklu -sipariş TS)


ama gece yarısı düşündüm, const'ı zaten iptal etmek istemiyorum, kaydedilen sınıfların alanlarının adlarına göre ayrı bir yapı olacak - editörde 2 dakika içinde kopyala-yapıştır))), iyi, FileWriteStruct()'a yapılan bir çağrıyla kaydetmek de uygundur

ve durumu şu yapıcı gibi bir şeyle geri yükleyeceğim:

yapıcıya böyle bir çağrı ile sabit alanları başlatabilirsiniz

veri kurtarma yalnızca terminali yeniden başlatmak için gereklidir

Henüz yapmadım, ancak her şeyin sorunsuz çalışacağından %99 eminim - tanıtmak istemediğim tek şey yeni bir veri türü (kaydetme yapısı) - ama daha kolay olacak ve ben kodu daha sonra okuyabilir .... yorumları yazmak bize düşmez)) ))

Yazmak için geçici bir yapı oluşturmak istemiyorsanız, alanları sırayla dosyaya yazmayı deneyin ve ardından bunları yapıcıda da okuyun. Daha hızlı olacağı gerçeğinden çok uzak, ancak kod kesinlikle "korkutucu" görünecek.
 
fxsaber :
Bu değil. Bir const_cast analoğuna ihtiyacı var, ama yok.