Hatalar, hatalar, sorular - sayfa 1749
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Kod tabanındabir onay göstergesi tasarladı. Ancak kaynakları ekleyemiyorum - "Dosya ekle" yi tıklıyorum, yazı kayboluyor, ancak dosya seçme arayüzü görünmüyor.
adblock yüklü mü? tüm açılır pencereleri engelleyen
Hiçbir şeyi değiştirmedi. Her şey daha önce çalıştı.
Ödeme sırasında bu butona tıklıyorum.
Cevap bundan başka bir şey değil
Evet, sorunuzu anlıyorum. Daha uygun imzalı bir fonksiyon var ama korumalı olduğu için çağrılamaz. Evet, davranış stüdyodan farklı: MKL'de daha katı bir tip kontrolü olduğu ortaya çıktı (bu durumda). Bunun bir hata olarak kabul edilip edilmediğini bilmiyorum. İşleve iletilen argümanın türünü kontrol ederseniz, sorun olmaz.
Kontrol oldukça seçicidir ve bu nedenle daha tartışmalıdır, bu da bundan kaynaklanmaktadır.
class A {
}public :
void f( int ) const {} /*(1)*/
void f( int ) {} /*(2)*/
};
class B : public A {
public :
void f( int ) const {} /*(3)*/
};
void OnStart ()
{
B b; //не const B
b.f( 0 ); //(*)
Ancak, türetilmiş sınıf tam olarak doğru olana sahipse, C++ temel sınıfı her zaman daha uygun bir yönteme ayrıştırmaz.
Ve MQL - önceki örnekte, daha uygun bir yöntem için temel sınıfı analiz etti, ancak bunda onu analiz etmiyor (burada, C++ gibi, B::f/*(3)*/ olarak adlandıracak), hangi tek bir yaklaşım olmadığı anlamına gelir
Tutarsız denetime başka bir örnek: C++ aşağıdaki kodu bulur
void f( int i ) const {}
void f( uint i ) {}
};
void OnStart()
{
A a;
a.f(( int ) 0 );
}
Kontrol oldukça seçicidir ve bu nedenle daha tartışmalıdır, bu da bundan kaynaklanmaktadır.
class A {
}public :
void f( int ) const {} /*(1)*/
void f( int ) {} /*(2)*/
};
class B : public A {
public :
void f( int ) const {} /*(3)*/
};
void OnStart ()
{
B b; //не const B
b.f( 0 ); //(*)
Ancak, türetilmiş sınıf tam olarak doğru olana sahipse, C++ temel sınıfı her zaman daha uygun bir yönteme ayrıştırmaz.
Ve MQL - önceki örnekte, daha uygun bir yöntem için temel sınıfı analiz etti, ancak bunda onu analiz etmiyor (burada, C++ gibi, B::f/*(3)*/ olarak adlandıracak), hangi tek bir yaklaşım olmadığı anlamına gelir
Tutarsız denetime başka bir örnek: C++ aşağıdaki kodu bulur
void f( int i ) const {}
void f( uint i ) {}
};
void OnStart()
{
A a;
a.f(( int ) 0 );
}
C++ için hangi derleyiciniz var? Gcc'm var ve her şey hatasız çalışıyor
void f( int i ) const {} //1
void f( unsigned int i ) {} //2
};
void OnStart ()
{
A a;
a.f(( int ) 0 );
}
(1 yada 2). Şimdi derleyici mesajını yapıştıracağım
Bu gerçekten - sıkı kontrol: bir yöntem imzaya göre daha uygundur, diğeri - sabitliğe göre
Bu gerçekten - sıkı kontrol: bir yöntem imzaya göre daha uygundur, diğeri - sabitliğe göre
Ve neden böyle bir yazı olduğu belli değil.
f -> operatörünü[] değiştirin, son örneğinizi alın - hem sol hem de sağ [] yapmayı düşünün. Zevkinize göre sabitlik ekleyin - ardından bir şablona sarın ve benzer bir şey elde edeceksiniz.
Eğer const yapılırsa - if içermeyen değişken kabul edilir
Belirsizlik söz konusu değilse, en azından bir uyarı yapılmalıdır.
f -> operatörünü[] değiştirin, son örneğinizi alın - hem sol hem de sağ [] yapmayı düşünün. Zevkinize göre sabitlik ekleyin - ardından bir şablona sarın ve benzer bir şey elde edeceksiniz.
Ne örneğinden bahsediyorsun? Kaynağı değil, çalışması gereken son kaydı getirebilir misiniz?
Sonuç böyle bir şey olmalı
{
A< int > a;
int b = a[ 0 ];
a[ 0 ] = a[ 1 ];
a[ 1 ] = b;
}
Sonuç böyle bir şey olmalı
{
A< int > a;
int b = a[ 0 ];
a[ 0 ] = a[ 1 ];
a[ 1 ] = b;
}