Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Web sitesi politikasını ve 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 )))