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

 

mql5가 의미 체계를 이동하는 이유는 무엇입니까? 특히 가상 머신이기 때문에 이러한 성능 최적화가 필요하지 않습니다. 또 어떤 용도로 사용될까요?

mql5 자체는 C++ 및 C++98과 매우 다르며 C++11/14/17에서는 더욱 그렇습니다. 그러나 이제 해당 기능 은 Expert Advisor를 만드는 데 필요한 모든 것을 완전히 포함합니다.

 
Andrey Pogoreltsev :

그러나 그 기능은 이제 고문을 만드는 데 필요한 모든 것을 완전히 커버합니다.

그들은 또한 6년 전 이전 MQL4에서 이러한 요구 사항을 다루었습니다. 그 당시 언어 수준이 어땠는지 알 수 있습니다. 우리는 그것에 대한 조언자를 썼고 그들 중 일부는 여전히 그런 구식 스타일로 코딩하고 있습니다. 그래서 모든 것은 상대적입니다.

또 어떤 용도로 사용될까요?

이것은 스레드의 마지막 몇 페이지에서 논의되었습니다.
 

여기에 오류가 발생합니다.

 void OnStart ()
  {
   struct sA
     {
       int                ii[ 51 ];
     };
   struct sB
     {
       string             name;
      sA                distrib;
     };
   sB f;
  }
'distrib' - struct undefined    Test2.mq5       21      25

그러나 출력하지 않습니다.

 void OnStart ()
  {
   struct sA
     {
       int                ii[ 51 ];
     };
   struct sB
     {
       //string            name;
      sA                distrib;
     };
   sB f;
  }

다음 중 하나도 출력하지 않습니다.

 struct sA
  {
   int                ii[ 51 ];
  };
struct sB
  {
   string             name;
   sA                distrib;
  };

void OnStart ()
  {
   sB f;
  }

첨부 파일에서 에러를 재현하기 위한 스크립트는 위의 몇 줄의 코드로 된 빈 스크립트입니다.

파일:
Test2.mq5  1 kb
 

글쎄요, 그건 전혀 말이 되지 않습니다.

 class A
  {
   class B
     {
       class C
        {
         class D
           {
             class E
              {
               bool               YES;
              };
           };
        };
     };
  };
void OnStart ()
  {
   E g;
  }

E 클래스는 그런 인기를 받을 자격이 없습니다.

오류 없이 컴파일됩니다.

 
이것은 컴파일러 오류입니까?
 class A
{
private :
   int i;
};

class B : public A
{
public :  
   void f( int i ) {} // declaration of 'i' hides member declaration at line 4
};
 
fxsaber :
이것은 컴파일러 오류입니까?
쓰레기에 대한 formchanina의 성가신 잡담, 심각한 문제에서 산만하게?
 
fxsaber :
이것은 컴파일러 오류입니까?
플러스도 마찬가지
 
Vict :
쓰레기에 대한 formchanina의 성가신 잡담, 심각한 문제에서 산만하게?

그의 열정의 입장에서 이 모든 것을 겪을 때 나에게 말해줄래?

 
fxsaber :
이것은 컴파일러 오류입니까?

그래서 논리적인 것 같다.

공개 함수에서 입력 매개변수를 비공개로 설정하는 방법 이해 상충.

이 private 매개변수를 이 함수 내에서 사용해야 하는 경우 입력으로 선언할 필요가 없습니다. 그는 존재합니다.

이것이 다른 변수를 의미하는 경우, 물론 함수 내부의 기존 개인 변수와 이름 충돌이 발생하므로 다른 이름으로 호출해야 합니다.


위협 그것은 중요하지 않은 것으로 밝혀졌습니다. 공개 또는 비공개입니다. 이것은 평범한 이름 충돌입니다. f 함수 내부에는 i가 입력 매개변수인지 아니면 상위 클래스 의 전역 변수 인지 불확실합니다.

 
Nikolai Semko :

질문은 개인 정보 보호로 인해 멤버에 액세스할 수 없음을 암시하지만 이름 충돌은 여전히 컴파일러에 표시됩니다.

내가 이미 쓴 것처럼 플러스는 정확히 같은 방식으로 작동합니다. 컴파일러에 오류가 없으며 모든 것이 정상입니다.