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

 
Andrey Pogoreltsev :

여기에 모호함이 필요하지 않습니다. 오버로드된 메서드가 적용되는 간단한 순서가 있어야 합니다. 저것들. 과부하를 해결하는 작업은 문제를 만드는 것이 아니라 가장 적합한 방법을 선택하는 것입니다. 액세스 한정자가 삭제되면 테이블의 첫 번째 메서드가 사용되거나 컴파일러 구현에 따라 다르지만 여기에는 모호성이 없습니다.

이제 입력 매개변수가 다른 2개의 메소드가 있는 경우, 예를 들면 다음과 같습니다.

C++로 돌아가면 동일한 벡터에 다음이 포함됩니다.

따라서 완전히 정상입니다.

당신은 초등학교의 아주 간단한 예를 들었습니다. 원작과 별 상관이 없는 것 같습니다.


알렉세이 나보이코프 :

음, 분명히 호출 서명과 가장 잘 일치하는 것입니다. 이 예에서는 상수가 아닌 객체의 메서드를 요청하므로 ceteris paribus를 호출해야 합니다.

그 규칙에 대해 몰랐습니다. 감사합니다.

두 메서드 모두에 대해 int 형식의 인수를 만들어 거기에서 캐스팅을 제거하면 정상적으로 컴파일됩니다. 저것들. MQL의 개그는 바로 캐스팅 때문입니다. 이 캐스팅은 효과가 없어야 합니다. 그는 동일하다

컴파일러가 오버로드된 메서드에 대한 캐스팅의 ID를 확인하지 않기 때문인 것 같습니다.

 

일반적으로 이 문제(MQL의 다른 많은 문제와 마찬가지로)를 해결하려면 메서드 중 하나를 보조 클래스로 이동해야 합니다.

 class A { };

class _B
{
 protected : 
  A _a[];
 public :        
   const A * operator []( uint i) const { return &_a[i]; }  
};

class B : public _B
{
  public :  
  A * operator []( uint i)       { return &_a[i]; }
};
 
fxsaber :

당신은 초등학교의 아주 간단한 예를 들었습니다. 원작과 별 상관이 없는 것 같습니다.

위에서 인용한 것과 동일한 규칙에 이 모든 것이 적용된다는 것을 이해하려면 C++ 표준을 읽어야 합니다.
 
Slava :

최적화 캐시에서 MT5와 MT4 모두에서 문자열 매개변수가 항상 63자로 잘렸다는 사실부터 시작하겠습니다.

이벤트를 전달할 때 문자열도 63자를 초과할 수 없습니다.

즉, 외부에서 들어오는 것은 제한적입니다.

최종 사용자를 위한 제품의 경우. 판매자는 제한 사항을 고려해야 합니다. 그리고 그가 그것을 모른다면 판매하기 전에 제품을 충분히 테스트하지 않았습니다.

이것은 과거와 현재에 관한 것이 아니라 시대를 따라 가고 더 나은 방향으로 변화하려는 열망이 있다면 좋은 방식으로 있어야합니다.

 

그런 문제가 발생 했습니다. 어드바이저를 테스트 할 때 매개변수를 설정한 후 시작 버튼을 누르면 어드바이저 설정이 기본 설정으로 재설정됩니다. 무엇이 문제일 수 있습니까?

비디오 예제에서

 
Dmitry Melnichenko :

그런 문제가 발생 했습니다. 어드바이저를 테스트 할 때 매개변수를 설정한 후 시작 버튼을 누르면 어드바이저 설정이 기본 설정으로 재설정됩니다. 무엇이 문제일 수 있습니까?

비디오 예제에서

MT5는 "설정" 탭으로 이동한 후 테스터의 설정을 자동으로 재설정합니다.

게시물 #1을 참조하세요.

 

다음 스레에서 질문을 던졌는데 잘 살펴보는 사람이 별로 없는 것 같다. 나는 여기에서 재현:

https://www.mql5.com/ru/forum/6343/page1020#comment_11112212

간단히 말해서: 선물(테스터에서)에서 거래가 열리고 닫히지만(SL/TP에 의해) 항상 이익이 0입니다. 이것은 테스터 버그 일 수 있습니까? 아니면 어떤 트릭이 필요합니까?

Вопросы от начинающих MQL5 MT5 MetaTrader 5
Вопросы от начинающих MQL5 MT5 MetaTrader 5
  • 2019.03.26
  • www.mql5.com
Подскажите пожалуйста, такой показатель тестера в жизни реален? И хороший это или плохой результат за год с депо 3000...
 

컴파일러 버그. 이러한 코드로 .mqh 파일을 컴파일(구문 확인)하면 오류가 생성되지 않습니다. 실행 파일을 컴파일할 때만 발행되기 때문에 불편하다.

 class A
{
 public : 
  A( int ) {  }
};

class B : public A { };   // Здесь должна быть ошибка  'A' - wrong parameters count

B b;
 
Alexey Navoykov :

컴파일러 버그. 이러한 코드로 .mqh 파일을 컴파일(구문 확인)하면 오류가 생성되지 않습니다. 실행 파일을 컴파일할 때만 발행되기 때문에 불편하다.

헤더는 원칙적으로 컴파일되지 않기 때문에 :)))

전체 헤더를 강제로 컴파일하면 많은 잘못된 오류가 발생합니다.

추신. C++ 컴파일러는 그러한 클래스를 사용하지 않고 맹세하지 않습니다.
 
Andrey Pogoreltsev :

헤더는 원칙적으로 컴파일되지 않기 때문에 :)))

전체 헤더를 강제로 컴파일하면 많은 잘못된 오류가 발생합니다.

추신. C++ 컴파일러는 그러한 클래스를 사용하지 않고 맹세하지 않습니다.

컴파일되지 않는 것으로 알고 있습니다. 우리는 구문 검사(ME에서는 "컴파일"이라고도 함)에 대해 이야기하고 있습니다. 지난 게시물에서 대괄호로 이것을 지정했기 때문입니다. C++ 컴파일러도 구문 검사(일반적으로 명령줄을 통해)를 실행하면 예쁜 것처럼 맹세할 것입니다.