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
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Sorunun ne olduğu çok açık değil. Nesnenin başlatılmasını Init() türünde ayrı bir yönteme, hatta belki sanal bir yönteme taşımak mümkün değil mi?
Tabii ki mümkün. class.get_int()/class.get_double()/class.get_string()/... ?) yapmak mümkün değil mi? Stil, alışkanlık...
Tabii ki mümkün. class.get_int()/class.get_double()/class.get_string()/... ?) yapmak mümkün değil mi? Stil, alışkanlık...
Mümkün, ancak o zaman nerede double d varsa, var[]; d=var[x] yerine d=var[x].get_double yazın. Mazoşizme gireceksek, topluca =))
Yani, sonunda konu, yazma işlemini (örtük dahil) aşırı yükleme olasılığını, yani bir yöntem çağrısının bağlamını belirleme ve beklenen dönüş değerinin türüne bağlı olarak mql'ye sokma arzusuna indirgenir. bu bağlamda istediğiniz kodu çağırın.
bu açıkça bir C++ standardı değildir ve genel olarak, C++ ne işe yarardı (MQL geliştiricileri tarafından temel alınmıştır) - C++'da bir programcının açıkça işleyemediği her şey, bu nedenle işaretçilerle çalışmak gerekiyordu ve kendi typedef'inizi yazın
hepsi bu kadar, işaretçi Afrika'da da bir bellek adresine bir işaretçidir, onu her zaman bir parametre olarak iletebilir ve bir işlevin sonucu olarak alabilirsiniz, işaretçiyi iptal edin - bayt belleğindeki fiziksel değeri alın, işaretçiyi yayınlayın yeni türüne - çok fazla bayt bellek alın)))
MQL'de, işaretçilerin nedenini söylemek zor, ancak oradalar, geliştiriciler veri korumanın bir öncelik olduğunu söyledi, bu nedenle "korumalı alanın" ötesine geçebilecek tüm yenilikler hariç tutuldu.
bir konuda, ne yazık ki şablonlarla ( template ) çalışma konusunda çok az pratiğim var, ancak bunun şu şekilde yapılabileceğinden şüpheleniyorum:
1. Sonuç olarak gerekli türü döndüren birkaç aşırı yüklenmiş işlev yazın ve bu türü parametre olarak alın, yani. Böyle:
2. şimdi f() işlevinin bir şablona sarılması ve x parametresini gizlemesi gerekiyor - şablonlar bunu yapmanıza izin veriyorsa, çağrı a=f() olacaktır - görsel olarak her şey yazmak gibi güzel olacak
bu açıkça bir C++ standardı değil
Yanıldığınıza inanıyorum - uzun süredir "saf" C ++ ile yazmamış olmama rağmen, ağ bunun gibi kod örnekleriyle dolu
Yanıldığınıza inanıyorum - uzun süredir "saf" C ++ ile yazmamış olmama rağmen, ağ bunun gibi kod örnekleriyle dolu
böyle bir örnek düzgün çalışacaktır, ama ya karmaşık tip ? - yapı mı dizi mi? C ++'da bu, türlerine işaretçiler kullanılarak çözüldü, derleyici fiziksel olarak bellek adresini döndürdü ve işaretçinin referansının kaldırılması verilerle doğru çalışmayı sağladı
böyle bir örnek düzgün çalışacaktır, ama ya karmaşık tip ? - yapı mı dizi mi? C ++'da bu, türlerine işaretçiler kullanılarak çözüldü, derleyici fiziksel olarak bellek adresini döndürdü ve işaretçinin referansının kaldırılması verilerle doğru çalışmayı sağladı
Mql'de bu örnek ne yazık ki doğru çalışmayacaktır.
Karmaşık bir tür, yapı veya dizinin kendisi, ihtiyaç duyduğu her şeyi aşırı yükleyebilir, aşırı yükleme gerektirmez...
Mql'de bu örnek ne yazık ki doğru çalışmayacaktır.
evet, şimdi gördüm, tip dönüştürmeyi aşırı yüklemek istiyorsunuz, MQL yardımı açıkça aşırı yüklenmesine izin verildiğini ve tekli işlemlerin sırasıyla yalnızca tekli ve ikili olarak aşırı yüklendiğini söylüyor, matrislerle çalıştım, aşırı yüklemeye çalıştım ^ - işe yaramadı, mecbur kaldım! kullanmak:
Örneğime tekrar baktım - derleyici örneğimi bir şablona sarmama izin vermiyor , ancak yalnızca bir sayı değil, örneğin return((1/x) - ve x parametresi olarak bir dize verebilirim string , genellikle tüm C derleyicileri derleme aşamasındadır, türlerin uygunluğunu kontrol ederler ve MQL belirsiz çözümlerin şablonlara sarılmasına izin vermez
IMHO, göreviniz 1 konu gönderisi, MQL'de yalnızca aşırı yüklenmiş tüm işlevleri tanımlayarak doğru bir şekilde çözülebilir, daha sonra derleme aşamasında iletilen ve döndürülen tüm değişken türleri ve tüm aşırı yüklenmiş işlevler kontrol edilecektir.
evet, şimdi gördüm, tip dönüştürmeyi aşırı yüklemek istiyorsunuz, MQL yardımı açıkça aşırı yüklenmesine izin verildiğini ve tekli işlemlerin sırasıyla yalnızca tekli ve ikili olarak aşırı yüklendiğini söylüyor, matrislerle çalıştım, aşırı yüklemeye çalıştım ^ - işe yaramadı, mecbur kaldım! kullanmak
%99 için ^ aşırı yüklemeye izin vermediği bir durum olmadığını söyleyebilirim ama ! verir. Ve aşırı yükleme olasılığı, operatörün tipine bağlı değildir. Bir şeyi yanlış anladın. Bu örneği buraya gönderin, zaten unuttuysanız ve puan aldıysanız, elbette yapmazsınız)
Operatörlerin türünde karşılaştığım tek kısıtlama, mantıksal operatörlerin ==, !=, ! ve = işaretçilere uygulandığında (any_type * ). Doğru aşırı yüklenmeleri için otomatik nesnelerle veya yapılarla çalışmanız gerekir. Son aylarda bu cipslerde bir sürü köpek yedim, bu yüzden güvenle konuşabiliyorum :)
%99 için ^ aşırı yüklemeye izin vermediği bir durum olmadığını söyleyebilirim ama ! verir. Ve aşırı yükleme olasılığı, operatörün tipine bağlı değildir. Bir şeyi yanlış anladın. Bu örneği buraya gönderin, zaten unuttuysanız ve puan aldıysanız, elbette yapmazsınız)
Operatörlerin türünde karşılaştığım tek kısıtlama, mantıksal operatörlerin ==, !=, ! ve = işaretçilere uygulandığında (any_type * ). Doğru aşırı yüklenmeleri için ya otomatik nesnelerle ya da yapılarla çalışmak gerekir. Son aylarda bu cipslerde bir sürü köpek yedim, bu yüzden güvenle konuşabiliyorum :)
matrislerle "klasik" çalışmada, matrisleri dönüştürmek için ^ operatörünü kullanmanız gerekir, işte benim örneğim - SSA yöntemini Matlab'dan taşıdım, bu, matrislerin CMatrixDouble'a dayalı en basit çarpımı, ataması ve aktarımıdır - he .. bu, sakladığı matrislerin boyutlarını bilmiyor (kaç satır ve sütunu var), onu sınıfımda sarmak zorunda kaldım