Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
OOP tarzı kodla savaşımın sonuçlarını gözden geçirdim - hmm... mükemmel! ))))
soru ortaya çıktı, ancak kodumda, üç kez, formun yapısı tam olarak kullanılıyor:
aramaların tümü özel yöntemlerdedir, ancak bir "jedi hilesi var mı?" CheckPointer(m_order)==POINTER_INVALID'den kaynak metinde kaçmak için
Bazı get / set hakkında soruyorum
özel bir sorun yok, ama tabiri caizse bir heves veya C ++'daki OOP teknikleri bilgisi için susuzluk henüz azalmadı
Soru "birçok harf" ise, !CheckPointer(mPtr) ve bir işlev çağrısındaysa , yapıcıdaki tüm NULL işaretçilerini başlatın ve ptr'yi silmeyi hatırlayarak kodda bununla karşılaştırın; ptr=NULL;
OOP tarzı kodla savaşımın sonuçlarını gözden geçirdim - hmm... mükemmel! ))))
soru ortaya çıktı, ancak kodumda, üç kez, formun yapısı tam olarak kullanılıyor:
aramaların hepsi özel yöntemlerde, ancak bir "jedi hilesi var mı?" CheckPointer(m_order)==POINTER_INVALID'den kaynak metinde kaçmak için
Bazı get / set hakkında soruyorum
özel bir sorun yok, ama tabiri caizse bir heves veya C ++'daki OOP teknikleri bilgisi için susuzluk henüz azalmadı
Igor, şu örneğe bak, bence ne soruyorsun.
Soru "birçok harf" ise, !CheckPointer(mPtr) vebir işlev çağrısındaysa , yapıcıdaki tüm NULL işaretçilerini başlatın ve ptr'yi silmeyi hatırlayarak kodda bununla karşılaştırın; ptr=NULL;
İşte, şeker için:
özel bir sorun yok, ama tabiri caizse bir heves veya C ++'daki OOP teknikleri bilgisi için susuzluk henüz azalmadı
Sınıfın tüm alanlarının yapıcıda varsayılan değerlerle başlatılmasını şiddetle tavsiye ederim. Mesele şu ki, bunu yapmak istiyorsanız:
void foo(){ CClass someClass; someClass.DoSomething(); }
, o zaman kimse sınıfınızın alanlarını başlatmayacak ve çöp değerler olacaktır.
İşte, şeker için:
hayır, neredeyse tanımları bıraktım, birkaç hafta önce yazdığım gibi sadece hiçbir şeyi sarmak istemiyorum - şimdilik OOP tarzında temiz kod görmek istiyorum, esnekliği ve olasılıkları takdir ediyorum
Not: Oluştururken çocukları yalnızca tanımla sardım, aynı tür başlatmayı 3 satıra yazmamak için daha sonra yöntemler eklemek daha kolay, yani. kaynak kod kodunda her seferinde bir satır
Igor, şu örneğe bak, bence ne soruyorsun.
hayır, C#'daki analogdan bahsediyorum - operatör ?? ( boş birlik operatörü ), C ++ tarzında mantıkta benzer bir şey görmek istiyorum
UPD:
Sınıfın tüm alanlarının yapıcıda varsayılan değerlerle başlatılmasını şiddetle tavsiye ederim. Mesele şu ki, bunu yapmak istiyorsanız:
, o zaman kimse sınıfınızın alanlarını başlatmayacak ve çöp değerler olacaktır.
Ben de tam olarak bunu yaptım, kurucu, temel sınıftaki her şeyin ve her şeyin başlatılmasıyla, soyundan gelenler temel sınıfı başlatır:
doğru başlatmayı unutmamak için bir makroya sardığım şey bu)))
hayır, neredeyse tanımları bıraktım, birkaç hafta önce yazdığım gibi sadece hiçbir şeyi sarmak istemiyorum - şimdilik OOP tarzında temiz kod görmek istiyorum, esnekliği ve olasılıkları takdir ediyorum
Not: Oluştururken çocukları yalnızca tanımla sardım, aynı tür başlatmayı 3 satıra yazmamak için daha sonra yöntemler eklemek daha kolay, yani. kaynak kod kodunda her seferinde bir satır
hayır, C#'daki analogdan bahsediyorum - operatör ?? (boş birlik operatörü), C++ stilinde mantıkta benzer bir şey görmek istiyorum
Önişlemciyi boşuna reddediyorsunuz. Şablonlarla birlikte bunlar en güçlü araçlardır. Operatör analogu ?? sadece yokmuş gibi görünüyor. C++ bu konuda daha serttir.
Hala saf OOP stili için bir savaşım var, forumda bir varlık varken tüm OOP tekniklerini öğrenmek istiyorum;)
Önişlemci konusunda seviyemi yükselttim ama... bence bunu kötüye kullanmamalısın, en azından benim tarzım değil, her şeyi berbat edebilirim ve kesinlikle birden fazla makro değişikliği ile kodu hızlıca okuyamıyorum. , ancak hataları nasıl arayabilirim ... peki, yeniden yazmak daha kolaydır - genellikle gerekli değildir
şablonlar... peki, geliştiricilerin Güvenlik Konseyi'nde sunduklarından hiç hoşlanmadım, her şeyi inceledim, Güvenlik Konseyi'ne hangi amaçlarla dahil olduklarını söylemek zor, belki de zamanları henüz gelmedi
C++ şablonlarını MQL'ye taşıma hakkında - bu, tartışmanın gösterdiği gibi, çoğu zaman C++ şablonlarının MQL için bir "dosya" ile sonlandırılmasının gerekli olduğu zamandır - MQL'ye eziyet etmek yerine .dll'ye dönmek daha kolaydır)))
Hala saf OOP stili için bir savaşım var, forumda bir varlık varken tüm OOP tekniklerini öğrenmek istiyorum;)
Önişlemci konusunda seviyemi yükselttim ama... bence bunu kötüye kullanmamalısın, en azından benim tarzım değil, her şeyi berbat edebilirim ve kesinlikle birden fazla makro değişikliği ile kodu hızlıca okuyamıyorum. , ama hatalar nasıl aranır ... peki, yeniden yazmak daha kolaydır - genellikle gerekli değildir
şablonlar... peki, geliştiricilerin Güvenlik Konseyi'nde sunduklarından hiç hoşlanmadım, her şeyi inceledim, Güvenlik Konseyi'ne hangi amaçlarla dahil olduklarını söylemek zor, belki de zamanları henüz gelmedi
C++ şablonlarını MQL'ye taşıma hakkında - bu, tartışmanın gösterdiği gibi, çoğu zaman C++ şablonlarının MQL için bir "dosya" ile sonlandırılmasının gerekli olduğu zamandır - MQL'ye eziyet etmek yerine .dll'ye dönmek daha kolaydır)))
Böylece şablonları kendiniz yazabilirsiniz.)))
evet )))
sonunda yardımda gezindi, geçersiz kılmayı kaçırdı, çünkü her şey makroda, düzenlemeler, tam olarak bir kopyala-yapıştır
UPD:
hayır, öyle değil, nedense kendisi erişim haklarının kontrolünden çıktı, halka açık bir yönteme gerek yok!
İşte, şeker için:
onun yerine benden önceki gibi yazmak istedim
şöyleydi:
ama MQL'de makro ikamelerini nasıl kontrol edeceğimi hatırladım
2019.09.16 22:57:42.837 tst (EURUSD,H1) bir = 1
2019.09.16 22:57:42.837 tst (EURUSD,H1) POINTER_INVALID = 0
2019.09.16 22:57:42.837 tst (EURUSD,H1) NULL = 0
ve hafızam bana hizmet ediyorsa, o zaman yılın başında günlüğe NULL yazdırmak ve orada 0 almak mümkündü, şimdi bir hata veriyor
onlar. NULL'un davranışı gelecekte değişmemelidir, ancak NULL için ikame edilen şey net değil, muhtemelen bu durumu şimdi kontrol edersem, o zaman yazdığım gibi if ( CheckPointer (m_order) == POINTER_INVALID ) o zaman bu doğru koddur, tabiri caizse )))