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
"this" değerini almak için Compare( ) işlevinde neden "&" operatörüne ihtiyaç duyduğunuzu merak ediyorum.
Karşılaştırma() yöntemi "const" olduğundan ve içindeki "const" olmayan yöntemleri çağırmak mümkün olmadığından.
Bu örnekte, sayfa 2'deki koda bakın, getPrice() yöntemi const değildir ve bunun içinde CopyClose() işlevi de const değildir. Tüm yöntemler "const" olarak değiştirilebilir, ancak CopyClose() değil.
Her neyse, "&" operatörü const olmayan yöntemlere erişim sağlar, bu yüzden onları bir " cont" yöntemi içinde çağırabiliriz.
Karşılaştırma() yöntemi "const" olduğundan ve içindeki "const" olmayan yöntemleri çağırmak mümkün olmadığından.
Bu örnekte, sayfa 2'deki koda bakın, getPrice() yöntemi const değildir ve bunun içinde CopyClose() işlevi de const değildir. Tüm yöntemler "const" olarak değiştirilebilir, ancak CopyClose() değil.
Her neyse, "&" operatörü const olmayan yöntemlere erişim sağlar, bu nedenle onları bir " cont" yöntemi içinde çağırabiliriz.
Şimdi görüyorum. Hiçbir fikrim yok, geçerli bir yapıysa, muhtemelen biliyorsunuzdur. Benim için Java'da olduğu gibi MQL'de 'const' yöntem bildirimlerinden tamamen kaçınmak daha iyidir.
Şimdi görüyorum. Hiçbir fikrim yok, geçerli bir yapıysa muhtemelen biliyorsunuzdur. Benim için Java'da olduğu gibi MQL'de 'const' yöntem bildirimlerinden tamamen kaçınmak daha iyidir.
std kitaplığının koleksiyon sınıflarının (çok kullanışlı) yöntemlerini (yani arama, sıralama, vb.) kullanmak için CObject'in Karşılaştırma yöntemini geçersiz kılmanız gerekir . Bu, Karşılaştırma yönteminden çağrılan tüm yöntemlerin de const yöntemler olması gerektiği anlamına gelir. OP bu ayrıntıyı atlamadı, OP sadece ' bu' işaretçisini doğru kullanmadı. OP, sadece this.DoSomething()'i çağırmak yerine, (self)nesnesine kendi işaretçisini yarattı. Örneğin. otherSelfPointer.DoSomething()
std kitaplığının koleksiyon sınıflarının (çok kullanışlı) yöntemlerini (yani arama, sıralama, vb.) kullanmak için CObject'in Karşılaştırma yöntemini geçersiz kılmanız gerekir . Bu, Karşılaştırma yönteminden çağrılan tüm yöntemlerin de const yöntemler olması gerektiği anlamına gelir. OP bu ayrıntıyı atlamadı, OP bu işaretçiyi doğru kullanmadı. OP, this.DoSomething()'i çağırmak yerine, yalnızca this anahtar sözcüğünü kullanmak yerine (self)nesneye yönelik kendi işaretçisini yarattı. Örneğin. otherSelfPointer.DoSomething()
Ne yaptığını anlıyorum, soru şu ki, bu yapı zararsız mı (genel olarak). Derleyici, nesnenin const işlevlerinde üyelerini değiştirmesini beklemez.
Ne yaptığını anlıyorum, soru şu ki, bu yapı zararsız mı (genel olarak). Derleyici, nesnenin const işlevlerinde üyelerini değiştirmesini beklemez.
Bu özel durumda sadece değeri alıyorum, hiçbir şeyi değiştirmiyorum. Ancak, bir const değerini değiştirmeye çalışırsak, muhtemelen derleyici bu sorun hakkında uyaracaktır veya en kötü durumda bir çalışma zamanı istisnası alırız.
Ne yaptığını anlıyorum, soru şu ki, bu yapı zararsız mı (genel olarak). Derleyici, nesnenin const işlevlerinde üyelerini değiştirmesini beklemez.
Ohhh.... Şimdi anlıyorum, benim hatam. Bu potansiyel olarak tehlikeli olabilir. OP, Compare() perview içindeki tüm yöntemlerin aynı zamanda const yöntemler olduğundan emin olmalıdır.
Merhaba @Alain Verleyen ,
GetPrice() yöntemini değiştirdim, CopyClose() kullanarak yerleştirdim CopyBuffer() kullanıyorum. Bu ana hedefi değiştirmez.
Bu nedenle, getPrice() yönteminde "const" anahtar sözcüğünü kullanırsam, şu hatayı alıyorum: " 'CopyBuffer' - aşırı yüklemelerin hiçbiri " işlev çağrısına uygulanamaz . Bunun, CopyBuffer bir const yöntemi olmadığı ve bir const yöntemi içinde const olmayan yöntemi çağırmanın mümkün olmadığı için gerçekleştiğini düşünüyorum.
Geç cevap verdiğim için kusura bakmayın ama şu ana kadar konuyu takip edecek vaktim olmadı.
CopyBuffer()'ı kullanırken neden getPrice()'ınızı const olarak bildiremediğinizi hala anlamıyorum. Bana mantıklı gelmiyor, güncellenmiş getPrice() sürümünüzü gönderebilir misiniz?
Herhangi bir güncelleme