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

 

월별 및 주간 시간대가 있는 차트(특히 EURUSD)에서 십자형은 커서 뒤에서 매우 느리게 이동합니다. 이를 재현하려면 커서를 대각선으로 부드럽게 이동하는 것으로 충분합니다. 다른 시간대에는 괜찮습니다. 지금까지 이런 지연은 없었다.


 
A100 :
실행 중 오류:

결과: 1-2-2-0-0-0

예상: 1-2-0-0

C++에서처럼. 또한 동일한 구문이 예상되었습니다. 캐스트는 생성자 호출이 아니라 캐스트입니다.

예, 모든 것이 맞는 것 같습니다. MQL에서 복사로 대체된 이동 생성자가 거기에서 호출될 가능성이 있다는 것입니다.
그리고 캐스팅은 (A)a1
 
Alexey Navoykov :
네, 맞는 것 같습니다. 아마도 MQL에서 복사로 대체되는 이동 생성자가 거기에서 호출되기 때문일 것입니다.
그리고 캐스팅은 (A)a1

(A) a1 또는 A (a1) 유형 캐스팅 A a1은 캐스트가 아니라 독에서와 같이 유형 선언입니다. 대괄호로 기다림에도 불구하고 뭔가 잘못되었습니다. 언어에는 단일 형식이 필요합니다.

 
Valeriy Yastremskiy :

(A) a1 또는 A (a1) 유형 캐스팅 A a1은 캐스트가 아니라 독에서와 같이 유형 선언입니다. 대괄호로 기다림에도 불구하고 뭔가 잘못되었습니다. 언어에는 단일 형식이 필요합니다.

여기서 차이점은 플러스(A)에서 a1이 객체의 복사본을 캐스팅하는 것을 의미한다는 것입니다. 그리고 MQL에서 - 링크 캐스팅. 이로 인해 호환성 문제가 발생할 수 있습니다.
나는 오랫동안 그들에게 pro: (A&)a1처럼 참조를 추가해 달라고 요청해 왔지만 이제 그들은 아마 아무 것도 바꾸지 않을 것입니다.
 
Alexey Navoykov :
여기서 차이점은 플러스(A)에서 a1이 객체의 복사본을 캐스팅하는 것을 의미한다는 것입니다. 그리고 MQL에서 - 링크 캐스팅. 이로 인해 호환성 문제가 발생할 수 있습니다.
나는 오랫동안 그들에게 pro: (A&)a1처럼 참조를 추가해 달라고 요청해 왔지만 이제 그들은 아마 아무 것도 바꾸지 않을 것입니다.

si not python) 그 사이에 무언가가 있습니다. ATP는 몰랐지만, 물체 의 유형을 주조 한다고 믿었습니다. 절약.)

 
Alexey Navoykov :
예, 모든 것이 맞는 것 같습니다. MQL에서 복사로 대체된 이동 생성자가 거기에서 호출될 가능성이 있다는 것입니다.
그리고 캐스팅은 (A)a1

나는 모든 것이 정확하다고 의심합니다.

 class A {
public :
         virtual void f() { Print ( 1 ); }
};
class B : public A {
public :
         virtual void g() { ((A)this).f(); }
};
class C : public B {
public :
         virtual void f() { Print ( 3 ); }
};
void OnStart ()
{
        B *b = new C;
        b.g();
}

MQL 결과 : 3

, C++: 1

어쨌든 확인해보자

 
A100 :

나는 모든 것이 정확하다고 의심합니다.

MQL 결과 : 3

, C++: 1

어쨌든 확인해보자

이것이 바로 위에서 설명한 상황입니다.
 
A100 :

나는 모든 것이 정확하다고 의심합니다.

MQL 결과 : 3

, C++: 1

어쨌든 확인해보자

C++에서 MQL 코드를 해석할 때 그렇게 모호하지 않을 것입니다.
C++용 코드(온라인: https://onlinegdb.com/Hy1FIj9Qv ):

 class A {
public :
         virtual void f() { printf ( "1" ); }
};
class B : public A {
public :
         virtual void g_ptr() { ((A*)( this ))->f(); }   //3
         virtual void g_ref() { ((A&)(* this )).f(); }   //3
         virtual void g_cast() { ((A)(* this )).f(); }   //1
};
class C : public B {
public :
         virtual void f() { printf ( "3" ); }
};
void OnStart ()
{
        B *b = new C;
        b->g_ptr();
        b->g_ref();
        b->g_cast();
}

int main()
{
     OnStart ();
     return 0 ;
}
 
Sergey Dzyublik :

C++에서 MQL 코드를 해석할 때 그렇게 모호하지 않을 것입니다.
C++용 코드(온라인: https://onlinegdb.com/Hy1FIj9Qv ):

그리고 MQL에서 g_cast의 세 번째 변형을 작성하는 방법을 제안합니까?

 
A100 :

그리고 MQL에서 g_cast의 세 번째 변형을 작성하는 방법을 제안합니까?

기본 클래스에서 명시적으로 함수를 호출 할 수 있습니다.

 class A {
public :
         virtual void f() { Print ( 1 ); }
};
class B : public A {
public :
         virtual void g() { this .A::f(); }   //1
};
class C : public B {
public :
         virtual void f() { Print ( 3 ); }
};
void OnStart ()
{
        B *b = new C;
        b.g();
}