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

 
런타임 에러
 class A {};
class B : public A {
public :
template < typename T>
                 void f( T )  { printf ( "%d" , 1 ); }
};
class C : public B {
public :
                 void f( A* ) { printf ( "%d" , 2 ); }
};
void OnStart ()
{
        C *c;
        B *b;
        c.f( b );
}

MQL 결과: 1

C++: 2

내가 기억하는 한 MQL의 원래 개념은 오래전에 바뀌었고 지금은 C++처럼 파생 클래스에 적절한 함수가 없을 때만 기본 클래스에 접근한다. 아니면 그들이 모든 것을 다시 플레이했습니까?

 
A100 :

MQL에서는 괜찮습니다.

C++는 두 경우 모두 오류를 제공합니다.

그리고 두 번째 경우에 무엇이 잘못될 수 있습니까? 포인터가 선언되었지만 사용되지 않았다는 최대 경고(힌트)가 있습니다.

 
모든 새 버전에서 관찰된 오류를 해결하십시오.

2020.07.26 10:54:28.285 PKFDC0:30019 0:00:00.110에 "OnInit에서 0이 아닌 코드 1을 반환했습니다" 오류와 함께 테스트된 유전자 패스(94, 1154)

2020.07.26 10:54:28.289 시험 장치 전문가 파일 ....\ MQL5\StochasticCCI.ex5 열기 오류 [2]

그리고 그것은 거기에 없고 있어서도 안 된다

업데이트 후 네트워크 에이전트에서 오류가 발생하고 업데이트 전에 제대로 작동했습니다. 이전 버전에서는 최적화 프로그램이 EA에서 오류를 표시하지 않고 EA가 다시 컴파일되지 않았습니다.

모든 데이터를 제거한 메타 트레이더를 완전히 철거하고 다시 설치해도 효과가 없었습니다.



 
Boris Egorov :
모든 새 버전에서 관찰된 오류를 해결하십시오.

2020.07.26 10:54:28.285 PKFDC0:30019 0:00:00.110에 "OnInit에서 0이 아닌 코드 1을 반환했습니다" 오류와 함께 테스트된 유전자 패스(94, 1154)

2020.07.26 10:54:28.289 시험 장치 전문가 파일 ....\ MQL5\StochasticCCI.ex5 열기 오류 [2]

그리고 그것은 거기에 없고 있어서도 안 된다

업데이트 후 네트워크 에이전트에서 오류가 발생하고 업데이트 전에 제대로 작동했습니다. 이전 버전에서는 최적화 프로그램이 EA에서 오류를 표시하지 않고 EA가 다시 컴파일되지 않았습니다.

모든 데이터를 제거한 메타 트레이더를 완전히 철거하고 다시 설치해도 효과가 없었습니다.



표시기 호출 코드를 보여주세요.
 
Mihail Matkovskij :

그리고 두 번째 경우에 무엇이 잘못될 수 있습니까? 포인터가 선언되었지만 사용되지 않았다는 최대 경고(힌트)가 있습니다.

하지 않기 때문에

 class B : public A {};
다른 방언이있을 수 있습니다. 어쨌든 개발자의 확인은 손상되지 않습니다.
 
MetaQuotes :
표시기 호출 코드를 보여주세요.

게시물에주의를 기울이십시오. 고문은 사람들을 위해 일하는 것을 중단했습니다 !!!!! https://www.mql5.com/ru/forum/347385/page5#comment_17519416

Новая версия платформы MetaTrader 5 build 2560: Улучшения во встроенной системе обучения
Новая версия платформы MetaTrader 5 build 2560: Улучшения во встроенной системе обучения
  • 2020.07.26
  • www.mql5.com
В пятницу 24 июля 2020 года будет выпущена обновленная версия платформы MetaTrader 5...
 

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

오류, 버그, 질문

A100 , 2020.07.26 01:02

MQL에서는 괜찮습니다.

 class A {};
class B : A {};
class C : B {
                 void f1( A* ) {}     //(1)нормально
                 void f2() { A *a; } //(2)нормально
};

C++는 두 경우 모두 오류를 제공합니다.


이 코드에 문제가 있는 이유를 설명해 주십시오.

 
fxsaber :

이 코드에 문제가 있는 이유를 설명해 주십시오.

잘 모르겠어! 예제를 구문 분석하는 중... 구조체를 클래스로 변경했습니다. - C++ 셸 에서 오류가 발생했습니다.

오류: '클래스 AA::A'에 액세스할 수 없습니다.

자신을 확인할 수 있습니다

 

컨텍스트 해결에서. 조상을 통해 개인 상속으로 인해 생성자를 사용할 수 없습니다.

컨텍스트를 명시적으로 지정하면 모든 것이 컴파일됩니다.

                 void f1( ::A* ) {}     //(1)нормально
                 void f2() { ::A *a; } //(2)нормально

_____

생성자가 필요한 이유는 묻지 마십시오. 잘 모르겠습니다.

 
@A100 , @TheXpert , 감사합니다.