Hatalar, hatalar, sorular - sayfa 1982

 
fxsaber :

Varsayılan kopyalama operatörü tetiklenir.

Zor değilse, nerede okumalı?

 

MQL4/5 kullanarak bir e-postadan veya SMS'den bilgileri nasıl okuyabileceğinizi söyleyin. Örneğin. E-postaya bilgi sinyali alıyorum, danışman pozisyonu okuyor ve açıyor / kapatıyor .

 
fxsaber :

Varsayılan kopyalama operatörü tetiklenir.

Bunu rıhtımlarda bile buldum (alttan 3. satıra dikkat):

https://www.mql5.com/ru/docs/basis/types/casting

 class CBar { };
class CFoo : public CBar { };
 
void OnStart ()
  {
   CBar bar;    
//--- динамическое приведение типа указателя *bar к указателю *foo разрешено 
   CFoo *foo = dynamic_cast <CFoo *>(&bar); // критической ошибки выполнения не возникнет   
   Print (foo);                             // foo=NULL      
//--- попытка явного приведения ссылки объекта типа Bar к объекту типа Foo запрещено
   foo=(CFoo *)&bar;                       // возникнет критическая ошибка выполнения
   Print (foo);                             // эта строка не будет выполнена
  }

Basit yapılara (aptalca memcpy tarzında) kopyalamanın mümkün olduğunu hatırlıyorum, ancak basit bir yapıya sahip değilim.

 
pavlick_ :

Basit yapılara (aptalca memcpy tarzında) kopyalamanın mümkün olduğunu hatırlıyorum, ancak basit bir yapıya sahip değilim .

MQL5 değişti.

 
fxsaber :

MQL5 değişti.

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

MetaTrader 5 platformunun yeni sürümü build 1640: kendi finansal araçlarınızı oluşturma ve test etme

MetaQuotes Yazılım A.Ş. , 2017.07.19 18:03

MetaTrader 5 platformunun yeni sürümü build 1640: kendi finansal araçlarınızı oluşturma ve test etme

  1. MQL5: Yapıların ve sınıfların nesneleri için örtük kopya operatörünün otomatik oluşturulması eklendi. Artık derleyici, nesneler için b=a gibi basit gösterimler yazmanıza izin veren kopyalama operatörlerini otomatik olarak oluşturur:
     class Foo
      {
       int                value;
    public :
       string Description( void ){ return IntegerToString (value);};
       //--- конструктор по умолчанию
                         Foo( void ){value=- 1 ;};
       //--- конструктор с параметрами   
                         Foo( int v){value=v;};
      };
    //+------------------------------------------------------------------+
    //|  структура, содержащая объекты типа Foo                          |
    //+------------------------------------------------------------------+
    struct MyStruct
      {
       string             s;
       Foo               foo;
      };
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart ()
      {
    //---
       MyStruct a,b;
       Foo an_foo( 5 );
       a.s= "test" ;
       a.foo=an_foo;
       Print ( "a.s=" ,a.s, " a.foo.Description()=" ,a.foo.Description());
       Print ( "b.s=" ,b.s, " b.foo.Description()=" ,b.foo.Description());
    //---
       Print ( "b=a" );
       b=a;
    //---
       Print ( "a.s=" ,a.s, " a.foo.Description()=" ,a.foo.Description());
       Print ( "b.s=" ,b.s, " b.foo.Description()=" ,b.foo.Description());
    /*
       Результат выполнения;
       a.s=test a.foo.Description()=5
       b.s= b.foo.Description()=-1
       b=a
       a.s=test a.foo.Description()=5
       b.s=test b.foo.Description()=5
    */
      }
    Örtük operatörde, nesnelerin üye bazında kopyalanması gerçekleştirilir.

    • Üye bir nesneyse, o nesne için uygun kopyalama operatörü çağrılır.
    • Üye bir nesne dizisiyse, her öğe için uygun kopyalama operatörünü çağırmadan önce, alıcı dizi ArrayResize aracılığıyla istenen boyuta yükseltilir veya küçültülür.
    • Üye basit türden bir diziyse, kopyalamak için ArrayCopy işlevi kullanılır.
    • Üye bir nesnenin işaretçisiyse, işaret ettiği nesne değil işaretçinin kendisi kopyalanır.

    İsteğe bağlı olarak, davranışı geçersiz kılabilirsiniz ve örtük kopyalama operatörü yerine .
 

fxsaber

Teşekkürler, şimdi açık. Mutlu muyum onu bile bilmiyorum. Eski kod sonları ile uyumluluk. İyi bir şekilde, bu tür önemli değişikliklerle (derleme anahtarları veya #pragma aracılığıyla) yeni işlevselliği bir şekilde zorla etkinleştirmeniz gerekir.


Örneğin benim auto_ptr'im:

 template < typename T_>
class auto_ptr
{
public :
   T_ *p;
   void reset()  { if ( this .p) delete this .p; this .p= NULL ;}
   auto_ptr( void *ptr= NULL ): p(ptr)  {}
   ~auto_ptr()  { this .reset();}
   void swap(auto_ptr<T_> &other)
   {
      T_ *buf = this .p;
       this .p = other.p;
      other.p = buf;
   }
};

Şimdi, auto_ptr'nin yeni kodda kopyalanabileceği ortaya çıktı (kopyalama operatörü/kurucu susturulmadıkça), aynı işaretçinin birden çok silinmesiyle sonuçlanır.

 
 

Dosya MQL5\Include\ Controls \ SpinEdit . mqh

int MaxValue (void) const { return(m_min _value ); }

 

MT4 nasıl indirilir?
mt4setup.exe dosyasını indiriyorum, kuruyorum ve platform mt5 kuruluyor. mt4 nereden alınır

 
lukyF : MT4 nasıl indirilir?

mt4setup.exe dosyasını indiriyorum, kuruyorum ve platform mt5 kuruluyor. mt4 nereden alınır

komisyoncunuzla. Bu soru her hafta geliyor...