MQL5에서 함께 배우고 쓰기 - 페이지 33

 

초기화를 초기화 목록으로 이동해야 합니다.

선언에서 정적 정수 상수만 초기화될 수 있습니다(적어도 C++에서는 MQL5에서 아직 모릅니다 :))

 
마지막 질문 하나 더. 문자열의 ""와 NULL이 동일하지 않은 이유는 무엇입니까?
 
Interesting :

새에 대해 이야기합니다.

그리고 컴파일러는 우리에게 무엇을 알려줄까요? 그리고 그는 다음과 같이 대답할 것입니다 - '=' - 불법 할당 사용

컴파일러가 기울어지지 않았습니다 - '=' - 불법 할당 사용.

내 질문은 - 프로그래머(이 경우 나)가 변수가 사용되기 전에 초기화 를 처리하지 않으면(컴파일러가 요구하는 대로 작동하고 생성자에서 이 순간이 누락됨) 어떻게 됩니까?


생성자에서 구조체/클래스의 멤버를 올바르게 초기화합니다.

 //Struct StrMQL4_Deal
struct StrMQL4_Deal
{
//----------------------------------------------------------------------------//
double TP;
double SL;
//----------------------------------------------------------------------------//
StrMQL4_Deal():TP( 0 ),SL( 0 ) { }
StrMQL4_Deal( double tp, double sl):TP(tp),SL(sl) { }
};
 
TheXpert :
마지막 질문 하나 더. 문자열의 ""와 NULL이 동일하지 않은 이유는 무엇입니까?
NULL은 문자열이 할당되지 않았음을 의미하며 "" 문자열이 할당되어 값을 갖는다.
 
mql5 :

생성자에서 구조체/클래스의 멤버를 올바르게 초기화합니다.

네, 저는 이것을 1년 이상 전에 이해했습니다. 적어도 2010년부터 저는 이것을 하고 있습니다.
 
Interesting :
네, 저는 이것을 1년 이상 전에 이해했습니다. 적어도 2010년부터 저는 이것을 하고 있습니다.

2010년 이후로 제대로 할 수 없었기 때문에 초기화 목록은 아주 최근에 도입되었습니다 :) .

mql5 :

NULL은 문자열이 할당되지 않았음을 의미하며 "" 문자열이 할당되어 값을 갖는다.

알겠습니다. 다르게 표현하겠습니다. 사용자에게 "할당되지 않음"의 문자열 상태를 제공하는 요점은 무엇입니까? 이것은 어떤 식 으로든 사용할 수 있습니까 아니면 그냥 목발입니까?
 
TheXpert :
2010년 이후로 제대로 할 수 없었기 때문에 초기화 목록은 아주 최근에 도입되었습니다 :) .
나는 생성자에서 의미했다.
 
TheXpert :

2010년 이후로 제대로 할 수 없었기 때문에 초기화 목록은 아주 최근에 도입되었습니다 :) .


클래스 생성자 에 초기화를 입력하고 형식에 선언을 입력해야 했습니다.

 //----------------------------------------------------------------------------//
double TP;
double SL;
//----------------------------------------------------------------------------//
정확히 기억나지는 않지만 2010년 초에 개체 작업을 시작했습니다(1/4분기, 확실하게 말할 수는 없습니다. 소스 코드를 찾는 것이 귀찮은 일입니다). 그 전에는 라이브러리에 참여하고 MQL5의 기본 사항을 연구했습니다(좀 더 정확하게는 MQL5로의 마이그레이션과 관련된 문제를 다루었습니다).
 
Rosh :
배열의 다른 데이터 유형에 대해 함수를 오버로드하고 있습니다 .
SPS, 이해할 수 있습니다. 따라서 보편적 인 방법은 없습니다. 문제는 오버로드될 때 배열의 유형을 지정해야 할 때 함수 헤더에서 단 하나의(!) 차이점으로 동일한 함수가 나타나기 때문입니다. 아주 우아하지는 않지만 당신이 무엇을 할 수 있는지, 나는 그것을 떠날 것입니다. 나는 디렉토리에서처럼 탈출구가 있기를 바랐다.
 

다음은 이해할 수 없는 결과를 생성하는 간단한 스크립트입니다.

 void OnStart ()
  {
   for ( uchar u= 120 ;u< 136 ;u++)
     {
       switch (u> 254 )
        {
          case  true : Print (u, ">254 - true" );  break;
          case false : Print (u, ">254 - false" ); break;
        }
     }
  }

누군가 이유가 무엇인지 설명할 수 있습니까? 숫자 254를 uchar 유형으로 명시적으로 캐스팅하면 의도한 대로 작동합니다.