오류, 버그, 질문 - 페이지 1982

 
fxsaber :

기본 복사 연산자가 실행됩니다.

어렵지 않다면 어디서 읽을까요?

 

MQL4/5를 사용하여 이메일이나 SMS에서 정보를 읽는 방법을 알려주세요. 예. 나는 정보 신호를 이메일로 수신하고, 고문은 포지션을 읽고 열고/닫습니다 .

 
fxsaber :

기본 복사 연산자가 실행됩니다.

나는 부두에서도 이것을 발견했습니다(아래에서 세 번째 줄에 주의).

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);                             // эта строка не будет выполнена
  }

(멍청하게 memcpy 스타일로) 간단한 구조로 복사하는 것이 가능했지만 간단한 구조가 없다는 것을 기억합니다.

 
pavlick_ :

(멍청하게 memcpy 스타일로) 간단한 구조로 복사하는 것이 가능했지만 간단한 구조 가 없다는 것을 기억합니다.

MQL5가 변경되었습니다.

 
fxsaber :

MQL5가 변경되었습니다.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MetaTrader 5 플랫폼 빌드 1640의 새 버전: 자신의 금융 상품 생성 및 테스트

MetaQuotes Software Corp. , 2017.07.19 18:03

MetaTrader 5 플랫폼 빌드 1640의 새 버전: 자신의 금융 상품 생성 및 테스트

  1. MQL5: 구조 및 클래스의 개체에 대한 암시적 복사 연산자의 자동 생성이 추가되었습니다. 이제 컴파일러는 객체에 대해 b=a와 같은 간단한 표기법을 작성할 수 있는 복사 연산자를 자동으로 생성합니다.
     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
    */
      }
    암시적 연산자에서 개체의 멤버별 복사가 수행됩니다.

    • 멤버가 개체인 경우 해당 개체에 대한 적절한 복사 연산자가 호출됩니다.
    • 멤버가 개체 배열인 경우 각 요소에 대해 적절한 복사 연산자를 호출하기 전에 수신 배열을 ArrayResize를 통해 원하는 크기로 늘리거나 줄입니다.
    • 멤버가 단순 유형의 배열인 경우 ArrayCopy 함수를 사용하여 복사합니다.
    • 멤버가 개체에 대한 포인터인 경우 포인터가 가리키는 개체가 아니라 포인터 자체가 복사됩니다.

    선택적으로 동작을 재정의하고 암시적 복사 연산자 대신 를 사용하여 고유한 변형 을 만들 수 있습니다.
 

fxsaber

감사합니다. 이제 명확해졌습니다. 다행인지도 모르겠습니다. 이전 코드 중단과의 호환성. 좋은 방법으로 (컴파일 키 또는 #pragma를 통해) 중요한 변경 사항으로 새 기능을 강제로 활성화해야 합니다.


예를 들어 내 auto_ptr은 다음과 같습니다.

 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;
   }
};

이제 auto_ptr이 새 코드에서 복사될 수 있다는 것이 밝혀졌습니다(복사 연산자/생성자가 침묵하지 않는 한). 결과적으로 동일한 포인터가 여러 번 삭제됩니다.

 
 

파일 MQL5\Include\ Controls \ SpinEdit . mqh

int MaxValue (무효) const { 반환(m_ 최소 _값); }

 

MT4는 어떻게 다운로드하나요?
mt4setup.exe 파일을 다운받아 설치하면 mt5가 플랫폼에 설치됩니다. mt4는 어디서 구하나요?

 
lukyF : MT4는 어떻게 다운로드하나요?

mt4setup.exe 파일을 다운받아 설치하면 mt5가 플랫폼에 설치됩니다. mt4는 어디서 구하나요?

당신의 브로커와 함께. 이 질문은 매주 올라옵니다...
사유: