Hatalar, hatalar, sorular - sayfa 2415

 

Uzun yıllar bu sınırlamayla yaşadık.

Soru ilk kez ortaya çıktı.

 
Stanislav Korotky :

Bu bir tür acımasız sınırlamadır. Bugünün gerekçeleri neler? Ve bir grup karakterden kümeler oluşturmak ne kadar uygun? Bir düzine farklı parametre mi üretiyorsunuz? O konforlu?

Test aracısı ile değişim protokolündeki gerekçeler.

Bir grup karakter ayarlamak için, o grubu bir metin dosyasına yazın ve #property tester_file kullanarak iletin.

 

Ancak tek bir test ile aynı zamanda test ajanına da aktarılır ve kısıtlama olmaksızın çalışır.

Ve neden statik girdi için de bir sınırlama var, aracıya hiç iletilemez.

Bu bir hata olmasa bile, lütfen bunu bir iyileştirme talebi olarak kabul edin.

 
Alexey Navoykov :

Derleyici hatası. Burada her şey açık olmasına rağmen bir belirsizlik hatası veriyor. İlk yöntem en uygun olarak adlandırılmalıdır. C++ ile kontrol edildi.

Doğru olan nasıl belirlenir?

 
Slava :

Test aracısı ile değişim protokolündeki gerekçeler.

Bir grup karakter ayarlamak için, o grubu bir metin dosyasına yazın ve #property tester_file kullanarak iletin.

Bu, son kullanıcı ürünlerine nasıl uyuyor? Önceden, kısıtlama haklı olabilirdi, ancak aktarılan diğer veri miktarlarına dayanarak bundan şüpheliyim. Limitin artırılması bir uyumsuzluk tehdidi oluşturmaz.

 
fxsaber :

Doğru olan nasıl belirlenir?

C++ standardından bahsedersek, o zaman:

13.3 Aşırı yük çözünürlüğü. Aşırı yük çözme, çağrının argümanları olacak ifadelerin bir listesi ve çağrının bağlamına göre çağrılabilecek bir dizi aday fonksiyon verildiğinde çağrılacak en iyi işlevi seçmeye yönelik bir mekanizmadır. En iyi işlev için seçim kriterleri, argümanların sayısı, argümanların aday fonksiyonun parametre tipi listesiyle ne kadar iyi eşleştiği, nesnenin (statik olmayan üye fonksiyonlar için) örtük nesne parametresiyle ne kadar iyi eşleştiği ve diğer bazı kriterlerdir. aday fonksiyonun özellikleri. [ Not: Aşırı yük çözünürlüğü tarafından seçilen işlevin bağlama uygun olduğu garanti edilmez. İşlevin erişilebilirliği gibi diğer kısıtlamalar, çağrı bağlamında hatalı biçimlendirilmiş kullanımını sağlayabilir.

Onlar. şöyle çalışmalı:

 class A { };

class B
{
  A _a[];
 public :
        A * operator []( uint i)       { return &_a[i]; }
   const A * operator []( uint i) const { return &_a[i]; }  
};

void OnStart ()
{
  B b1;
   const B b2;
  b1[ 0 ]; // []
  b2[ 0 ]; // [] const
}
 
Andrey Pogoreltsev :

C++ standardından bahsedersek, o zaman:

13.3 Aşırı yük çözünürlüğü. Aşırı yük çözme, çağrının argümanları olacak ifadelerin bir listesi ve çağrının bağlamına göre çağrılabilecek bir dizi aday fonksiyon verildiğinde çağrılacak en iyi işlevi seçmeye yönelik bir mekanizmadır. En iyi işlev için seçim kriterleri, argümanların sayısı, argümanların aday fonksiyonun parametre tipi listesiyle ne kadar iyi eşleştiği, nesnenin (statik olmayan üye fonksiyonlar için) örtük nesne parametresiyle ne kadar iyi eşleştiği ve diğer bazı kriterlerdir. aday fonksiyonun özellikleri. [ Not: Aşırı yük çözünürlüğü tarafından seçilen işlevin bağlama uygun olduğu garanti edilmez. İşlevin erişilebilirliği gibi diğer kısıtlamalar, çağrı bağlamında hatalı biçimlendirilmiş kullanımını sağlayabilir.

Onlar. şöyle çalışmalı:

B2 için tam bir teklik vardır. b1 - hayır.

 
fxsaber :

Doğru olan nasıl belirlenir?

Açıkçası, çağrı imzasıyla en iyi eşleşeni. Bu örnekte, sabit olmayan bir nesnenin yöntemi istenmektedir; buna göre, ceteris paribus, çağrılmalıdır.

Her iki yöntem için de int türünde bir argüman oluşturarak yayından kaldırırsanız, normal olarak derlenir. Onlar. MQL'deki tıkaç tam olarak dökümden kaynaklanmaktadır. Bu dökümün hiçbir etkisi olmamalıdır, çünkü o aynı

 
fxsaber :

b2 için tam bir teklik vardır. b1 - hayır.

Burada belirsizliğe gerek yok. Aşırı yüklenmiş yöntemlerin uygulandığı basit bir sıra olmalıdır. Onlar. aşırı yükü çözmenin görevi ikilem yaratmak değil, en uygun yöntemi seçmektir. Erişim değiştirici atılırsa, tablodaki ilk yöntem alınır veya derleyicinin uygulanmasına bağlıdır, ancak burada bir belirsizlik yoktur.

Şimdi, örneğin farklı giriş parametrelerine sahip 2 yöntem varsa:

 class B
{
  A _a[];
 public :
        A * operator []( int i)  {...}
        A * operator []( bool i) {...}  
};
B b;
b[ 0 ];     // ok
b[ true ]; // ok
b[ 0 u];   // ambiguous call to overloaded function

C++'a dönersek, aynı vektörde şunlar bulunur:

reference       operator []( size_type pos );
const_reference operator []( size_type pos ) const ;

Yani tamamen normal.

 
Stanislav Korotky :

Bu, son kullanıcı ürünlerine nasıl uyuyor? Önceden, kısıtlama haklı olabilirdi, ancak aktarılan diğer veri miktarlarına dayanarak bundan şüpheliyim. Limitin artırılması bir uyumsuzluk tehdidi oluşturmaz.

Optimizasyon önbelleğinde hem MT5 hem de MT4'te dize parametrelerinin her zaman 63 karaktere kısaltıldığı gerçeğiyle başlayalım.

Olayları iletirken, dize de 63 karakterden uzun olamaz.

Yani dışarıdan gelen sınırlıdır.

Son kullanıcılar için ürünlere gelince. Satıcı kısıtlamaları dikkate almalıdır. Ve bunları bilmiyorsa, satmadan önce ürününü yeterince test etmemiştir.