Sergey Dzyublik : MT5 버그(빌드 2365) 참조로 포인터를 전달할 때 할당 연산자를 사용하여 클래스 생성자 를 암시적으로 호출할 때 컴파일 오류가 생성자 인수로 사용됩니다. 참조로 전달되는 포인터가 값으로 전달되는 것으로 대체되면 모든 것이 작동합니다.
Ilyas : 개체에 대한 ArrayResize가 더 빠르게 작동하기 시작한 것을 알 수 있습니다. 다시 한 번, ArrayResize 함수의 일부 중 하나의 복잡성이 로그에서 0으로 감소했습니다.
예약된 메모리에 대한 ArrayResize 속도를 높여주셔서 대단히 감사합니다. 실제 프로젝트의 MT5(빌드 2365)에서는 std::vector::push_back의 속도가 이전 빌드에 비해 1.5배 빨라졌습니다. 그리고 std::vector:resize 뒤의 지연이 2.2배에서 1.45배로 줄었습니다.
2365 - 코드에 오류가 있습니다. 그것을 알아낼 시간이 없었습니다. 2361로 롤백 - 정상. mq4에서 - 같은 상황입니다.
쪽지 감사합니다 확인하겠습니다
기본 클래스 생성자를 호출할 때 매개변수를 전달하는 것과 유사합니다.
MT5 버그(빌드 2365) 참조로 포인터를 전달할 때 할당 연산자를 사용하여 클래스 생성자 를 암시적으로 호출할 때 컴파일 오류가 생성자 인수로 사용됩니다.
참조로 전달되는 포인터가 값으로 전달되는 것으로 대체되면 모든 것이 작동합니다.
올려주셔서 감사합니다 수정했습니다
템플릿 클래스의 템플릿 매개변수를 기본 클래스로 사용할 때 기본 클래스 생성자 를 호출할 때 MT5 버그(빌드 2365) 컴파일 오류가 발생합니다.
MT5(빌드 2363)에는 문제가 없었습니다.
개체에 대한 ArrayResize가 더 빠르게 작동하기 시작한 것을 알 수 있습니다.
다시 한 번, ArrayResize 함수의 일부 중 하나의 복잡성이 로그에서 0으로 감소했습니다.
예약된 메모리에 대한 ArrayResize 속도를 높여주셔서 대단히 감사합니다.
실제 프로젝트의 MT5(빌드 2365)에서는 std::vector::push_back의 속도가 이전 빌드에 비해 1.5배 빨라졌습니다.
그리고 std::vector:resize 뒤의 지연이 2.2배에서 1.45배로 줄었습니다.
빌드 2366, 제 생각에는 상수가 지금 올바르게 작동하지 않습니다.
2020.03.21 12:55:59.904 tst (EURUSD,H1) A::f1
2020.03.21 12:55:59.904 tst (EURUSD,H1) A::f2
2020.03.21 12:55:59.904 tst (EURUSD,H1) 십사
2020.03.21 12:55:59.904 tst (EURUSD,H1) A::f1
2020.03.21 12:55:59.904 tst (EURUSD,H1) A::f2
2020.03.21 12:55:59.904 tst (EURUSD,H1) 2.5
2020.03.21 12:55:59.904 tst (EURUSD,H1) A::f1
2020.03.21 12:55:59.904 tst (EURUSD,H1) A::f2
2020.03.21 12:55:59.904 tst (EURUSD,H1) 3.6
2020.03.21 12:55:59.904 tst (EURUSD,H1) A::f1
2020.03.21 12:55:59.904 tst (EURUSD,H1) A::f2
2020.03.21 12:55:59.904 tst (EURUSD,H1) 4.7
const 를 static 으로 바꾸면 예상대로 작동합니다. a 및 b를 초기화할 때 f1() 및 f2()를 한 번 호출합니다.
2020.03.21 12:58:03.496 tst (EURUSD,H1) A::f1
2020.03.21 12:58:03.496 tst (EURUSD,H1) A::f2
2020.03.21 12:58:03.496 tst (EURUSD,H1) 십사
2020.03.21 12:58:03.496 tst (EURUSD,H1) 2.5
2020.03.21 12:58:03.496 tst (EURUSD,H1) 3.6
2020.03.21 12:58:03.496 tst (EURUSD,H1) 4.7
그런 코드를 작성하면 일반적으로 잡을 수 없는 지속적인 버그
빌드 2366, 제 생각에는 상수가 지금 올바르게 작동하지 않습니다.
2020.03.21 12:55:59.904 tst (EURUSD,H1) A::f1
2020.03.21 12:55:59.904 tst (EURUSD,H1) A::f2
2020.03.21 12:55:59.904 tst (EURUSD,H1) 십사
2020.03.21 12:55:59.904 tst (EURUSD,H1) A::f1
2020.03.21 12:55:59.904 tst (EURUSD,H1) A::f2
2020.03.21 12:55:59.904 tst (EURUSD,H1) 2.5
2020.03.21 12:55:59.904 tst (EURUSD,H1) A::f1
2020.03.21 12:55:59.904 tst (EURUSD,H1) A::f2
2020.03.21 12:55:59.904 tst (EURUSD,H1) 3.6
2020.03.21 12:55:59.904 tst (EURUSD,H1) A::f1
2020.03.21 12:55:59.904 tst (EURUSD,H1) A::f2
2020.03.21 12:55:59.904 tst (EURUSD,H1) 4.7
const 를 static 으로 바꾸면 예상대로 작동합니다. a 및 b를 초기화할 때 f1() 및 f2()를 한 번 호출합니다.
2020.03.21 12:58:03.496 tst (EURUSD,H1) A::f1
2020.03.21 12:58:03.496 tst (EURUSD,H1) A::f2
2020.03.21 12:58:03.496 tst (EURUSD,H1) 십사
2020.03.21 12:58:03.496 tst (EURUSD,H1) 2.5
2020.03.21 12:58:03.496 tst (EURUSD,H1) 3.6
2020.03.21 12:58:03.496 tst (EURUSD,H1) 4.7
그것이 정확히 작동하는 방식입니다.
그런 코드를 작성하면 일반적으로 잡을 수 없는 지속적인 버그
여기에서도 모든 것이 맞습니다.
그것이 정확히 작동하는 방식입니다.
작년에 잘못 작동했습니다 - 특별히 테스트된 const 수정자
@Ilyas 는 MQL 프로그램이 시작되는 방법을 설명한 것 같습니다. 먼저 설명된 위치에 관계없이 모든 const 및 static이 초기화된 다음 클래스 생성자가 호출됩니다.
좋아, 이 정적 / const 초기화를 사용하면 - 여전히 올바르게 배포될 수 있지만 여기에는 const 수정자가 컴파일러가 이를 확인할 것을 보장하지 않는다는 사실이 있습니다. 매우 예상치 못한 - 내 두 번째 예