OOP, mql5'te şablonlar ve makrolar, incelikler ve kullanım teknikleri - sayfa 10
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
Evet ve genel durumda hala bir anlam ifade etmiyor. Sonuçta, miras zinciri herhangi bir şey olabilir: en azından Interface<CBase>, en azından Interface<C<B<A<CBase>>>>, sayısız seçenek var. Gerçekçi olmayan tüm olası seçeneklere sırayla CBase yayınlamanız gerekecek.
Arayüzler hakkındaki bilgilerin depolanmasını sınıf nesnesinin kendisinde uygulayacağımı hatırlıyorum. Ve mevcut arabirim pedlerine ek olarak, pedimizde sarmalayıcı olarak çalışacak bağımsız arabirim sınıfları yapın. Evet, ancak o zaman tüm bunların gereksiz ve gereksiz olduğu sonucuna vardım. Temel sınıfı herhangi bir arayüze dönüştürmek için herhangi bir pratik ihtiyaç görmedim. Bu sadece biraz mantıksız. Tek seçenek, sınıfın hata ayıklama amacıyla belirli bir arabirimi destekleyip desteklemediğini bulmaktır, ancak bu, bu şekilde yayınlamayı gerektirmez.
Bence arayüzü arayüzün kendisinde saklamanız gerekiyor. Arayüz<T,CBase>::GetComparer().Compare(CBase &a, T& b); Kodu bir örnek olarak orada çizdim, ancak bir şey forumu çok harfli olarak doldurmak istemiyor.
Bence arayüzü arayüzün kendisinde saklamanız gerekiyor. Arayüz<T,CBase>::GetComparer().Compare(CBase &a, T& b); Kodu bir örnek olarak orada çizdim, ancak bir şey forumu çok harfli olarak doldurmak istemiyor.
Yay. Her durumda, bu çöp değil, bir tartışma konusudur. İşte tartışmanın buraya taşındığı başlıkta, tam orada - evet, uygunsuz olurdu.
TAMAM)
TAMAM)
Her iki bağımsız değişkenin de T olması gerekiyorsa neden bir IComparer::Compare( CBase &op1, T &op2) yöntemi var?
Her iki bağımsız değişkenin de T olması gerekiyorsa neden bir IComparer::Compare( CBase &op1, T &op2) yöntemi var?
Sadece aynı türleri karşılaştırmak mümkün müdür? hayır varsaydım. T==CBase yapın ve her iki argüman da T olacaktır)
Ah, anlıyorum, o zaman her şeyi yanlış yaptın. Sizin durumunuzdaki IComparer sınıfı, IComparer<T1,T2,CBase> gibi olmalıdır. Buna göre yöntem şu şekilde olacaktır:
Ve bir sınıfı miras alırken, bu belirli yöntemi aşırı yükleyeceksiniz, her şey yerine oturacak.Ah, anlıyorum, o zaman her şeyi yanlış yaptın. Sizin durumunuzdaki IComparer sınıfı, IComparer<T1,T2,CBase> gibi olmalıdır. Buna göre yöntem şu şekilde olacaktır:
Ve bir sınıfı miras alırken, bu belirli yöntemi aşırı yükleyeceksiniz, her şey yerine oturacak.Bu CBase'in amacı nedir? Ve neden aynı türden tam olarak 2 değer karşılaştırılmalı?
karşılaştırma için dinamik döküm? aklını mı kaçırdın?
tamamen sanal bir işlev şöyle yazılır - sanal int CompareTo(Sayı *par) = 0;
derleyici yemin edecek ve kendi kendine yazılmış bir istisna vekili değil.
tamamen sanal bir işlev şöyle yazılır - sanal int CompareTo(Sayı *par) = 0;
derleyici yemin edecek ve kendi kendine yazılmış bir istisna vekili değil.
Derleyicinin küfretmesine ihtiyacım yok çünkü sürekli olarak temel türün sınıflarını değiştiriyorum (bu örnekte, Sayı). Derleyici ona yemin ederse, kod hiç çalıştırılmayacaktır.