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

 

논리 오류

 void f( const int   ) {}
void f( const int & ) {}
void OnStart ()
{
           int i = 0 ; f( i ); //(1) нормально
     const int j = 0 ; f( j ); //(2) Error: 'f' - ambiguous call to overloaded function with the same parameters
}

(1)과 (2)의 차이점은 무엇입니까?

 
A100 :

논리 오류

(1)과 (2)의 차이점은 무엇입니까?

1번에서 실수가 있었던 것 같습니다. 그리고 2nd는 j+0을 통해 우회할 수 있습니다.

 
fxsaber :

1번에서 실수가 있었던 것 같습니다. 그리고 두 번째 것은 j+0 을 통해 우회할 수 있습니다 .

그리고 불필요한 산술 연산 은 어떻습니까? 그것 없이 할 수 있다면:

         const int j = 0 ; f(( int )j);
 
A100 :

그리고 불필요한 산술 연산 은 어떻습니까?

컴파일 후에는 되지 않습니다.

 
fxsaber :

컴파일 후에는 되지 않습니다.

할 것이다. 일반적인 경우 컴파일 오류는 런타임 오류로 이동합니다.

 void f( const int   ) { Print ( 1 ); }
#define int short
//...
void f( const int   ) { Print ( 2 ); }
void f( const int & ) { Print ( 3 ); }
void OnStart ()
{                     //Результат:
           int i = 0 ; f( i   );  //2
     const int j = 0 ; f( j+ 0 );  //1
}

결과: 2:1

그리고 버전: 2:2

 void OnStart ()
{                     //Результат:
           int i = 0 ; f( i   );  //2
     const int j = 0 ; f(( int )j); //2
}
 
A100 :

할 것이다. 일반적인 경우 컴파일 오류는 런타임 오류로 이동합니다.

결과: 2:1

소스의 결과가 혼동됩니다. 실행에 추가가 있다고 생각하지 않습니다. 컴파일러가 규정하는 것은 표현식에 대해 int 함수를 호출하는 것입니다. 표현식 자체는 평가하지 않습니다.

 

C ++에 대한 반복자의 아날로그를 구현하는 것에 대해 생각했습니다. 하지만 슬픔이 있었다...


개발자에게 질문:
역참조 연산을 구현하기 위한 모범 사례로 MQL에서 허용되는 단항 연산자를 다시 로드하는 것이 좋습니다.

  • 단항 +,-,++,--,!,~
 
Sergey Dzyublik :

역참조 연산을 구현하기 위한 모범 사례로 MQL에서 허용되는 단항 연산자를 다시 로드하는 것이 좋습니다.

  • 단항 +,-,++,--,!,~

미친듯이 여기 포럼에는 모범 사례에 대해 생각하는 사람들이 있습니다.

가장 논리적인 것은 이동이 필요하기 때문입니다. (죄송합니다. 매개변수가 필요합니다. 그러면 덧셈이 가장 드물게 사용됩니다.) 하지만 적어도 하나는 잘 작동할까요?

얻을 수 있는 최대값은 다음과 같습니다.

(~w).F();

점의 우선 순위 때문에 항상 괄호로 묶어야 합니다.

 
Sergey Dzyublik :

개발자에게 질문:
역참조 연산을 구현하기 위한 모범 사례로 MQL에서 허용되는 단항 연산자를 다시 로드하는 것이 좋습니다.

  • 단항 +,-,++,--,!,~

MQL에서 무엇을 역참조할 수 있습니까? - 여기서 객체에 대한 포인터도 포인터 이름으로 액세스할 때 이미 역참조됩니다.

추신 : 당신의 에너지가 올바른 길을 가고있을 것입니다. .... 지난 달, 앞으로 백 번, 나는 2 차원 배열에 대한 클래스 래퍼를 만들려고 노력했지만 아무리 싸워도 과부하가 불가능했습니다. [] 일반 2차원 배열 arr[1] [2] 로 액세스하려면 MQL에서 포인터 역참조에 대해 이야기하고 있습니다.

 
Igor Makanu :

아무리 애를 써도 [] 를 오버로드하여 일반 2차원 배열 arr[1][2] 로 액세스할 수 없었습니다. MQL에서 포인터 역참조에 대해 이야기하고 계시는군요...

그것은 일어난다))