Hatalar, hatalar, sorular - sayfa 1967

 
Комбинатор :
Derlemek ve çalıştırmak için profesyonellerde ortaya çıkarsa sorun değil)

Burada neyi sevmediğini anlamıyorum. Her şey çalışıyor.

 template < typename T>
void f() { }

template <>
void f< int >() { }

int _tmain( int argc, _TCHAR* argv[])
{
  f< double >();
  f< int >();

   return 0 ;
}
 
Alexey Navoykov :

Burada neyi sevmediğini anlamıyorum. Her şey çalışıyor.

Tamam, aptalım.
 

Evet, bunu zaten keşfettim. Ancak sorun şu ki, kaynakta bu üye aslında bir diziydi ve basitlik için önce bir skaler ile uğraşmaya karar verdim. Ancak, bir dizi için benzer bir teknik çalışmaz. Diziyi statik olarak üye işlevinin içine sürüklemek zorunda kaldım.

 
Stanislav Korotky :

Ancak, bir dizi için benzer bir teknik çalışmaz. Diziyi statik olarak üye işlevinin içine sürüklemek zorunda kaldım.

Bu zaten bir derleyici hatasıdır - bunu Servis Masasına bildirmeniz gerekir.

 template < typename T>
struct A {
         static int i[];
};
template < typename T>
int A::i[]; //error: '[' - unexpected token
 

1650 oluşturun. Birkaç ilgili .ex5 modülü (ana ve kitaplıklar) varsa, hiçbir şey işe yaramaz. Her yerde form hatası:

2017.08.18 01:49:59.759 Beraberlik (USDJPY,H1) 'yyy.ex5' içinde 'xxx' bulunamıyor

Her şey daha önce iyi çalıştı. Şimdi bile MetaEditor 1646 + MetaTrader 1650'yi derlerken her şey çalışıyor

Açıkça MetaEditor 1650'de bir hata, .ex5 dosyalarının boyutu neredeyse yarı yarıya azaldı. Neden bu tür deneyler?

 

kod ekliyorum

 //Test.mqh
class A {};
class B { public :
        B() { f(); }
        A *g() { return NULL ; }
void f()
{
         void *x = g();
         if ( true )
                 return ; 
         delete x; //в build 1650 не работает даже если до delete никогда (!) не доходит
                   //а ошибка при выполнении возникает именно из-за наличия этой строки
                   //и указатель в исходном коде действительный (есть проверка)
}
};

//Test.mq5
#include "Test.mqh"
#import "Test2.ex5"
        A *f();
#import
void OnStart ()
{
        f();
}
//Test2.mq5
#property library
#include "Test.mqh"
static B b;
A *f() export { return NULL ; }

Sonuç bir önceki gönderide.

 
Kontrol edilecek başka bir örnek
 //Test.mq5
class A;
#import "Test2.ex5"
        A *f();
        void g( A* );
#import
void OnStart () //вариант 1
{
        f(); /*возвращаемое значение не используется*/
}
 //Test2.mq5
#property library
class A {};
static A *a;
A *f()       export { /*делает что-то полезное*/ ; return a; }

void g( A* ) export { /*делает что-то полезное*/; }

Kütüphane geneldir. Geçerken, bu özel durumda f() tarafından döndürülen işaretçi daha fazla kullanılmaz - seçenek 1 (ancak kullanılabilir - aşağıdaki seçenek 2'ye bakın). Test.mq5 derlenirken hiçbir hata mesajı yoktur, bu da derleyicinin (A) sınıfını tanımlamasına gerek olmadığı anlamına gelir. Ancak, yürütülürken hata şudur: 'Test2.ex5' içinde 'f' bulunamıyor

Daha ileri

 void OnStart () //вариант 2
{
        g( f()/*возвращаемое значение используется*/);
}
 
Söyle bana, test sonuçlarında maksimum düşüşü değil, göreceli olanı ayarlayabilir misin? Ve sonra maksimumun genellikle %3-5 olduğu ve bağıl oranın %50'ye ulaştığı ortaya çıkıyor. Göreceli düşüşü görmek için testi ayrı olarak çalıştırmanız gerekir. Şimdiden teşekkürler
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии ( советники ) перед началом использования их в реальной торговле. При...
 
 
Vladimir Pastushak :

Mutlu olmak için Windows dilinin değiştirilmesi gerekiyor...

Neden: