오류, 버그, 질문 - 페이지 3101 1...309430953096309730983099310031013102310331043105310631073108...3184 새 코멘트 mktr8591 2021.11.03 14:43 #31001 b3095에서 스크립트를 실행합니다. template < typename T> void f1(T* const Ptr) { Print ( __FUNCSIG__ );} template < typename T> void f1(T* & Ptr) { Print ( __FUNCSIG__ );} class X {}; void OnStart () { //--- const X* Ptr = new X; f1(Ptr); //void f1<const X>(const X*&) f1< const X>(Ptr); //void f1<const X>(const X*&) //дальше непонятно! f1< const X>(( const X*) Ptr); //void func_902::f1<const X>(const X*const) f1< const X>(( const X* const ) Ptr); //void func_902::f1<const X>(const X*const) f1< const X>((X*)Ptr); //void func_902::f1<const X>(const X*const) delete Ptr; } f1(T* & Ptr) 오버로드를 제거하면 5개 호출 모두 void f1<const X>(const X*const)를 반환합니다. 일종의 기능인가요? mktr8591 2021.11.03 16:31 #31002 설명을 부탁드립니다: *1* 줄은 예상대로 컴파일러 오류를 생성합니다. 그리고 *2* 라인은 잘 컴파일되고 작동합니다. 왜요? int f( int & p) { return p;} class X { public : const int i; X(){} /*1*/ //X(X& x) : i(f(x.i)) {f(x.i);} //'i' - constant variable cannot be passed as reference /*2*/ X(X& x) : i(f(x.i)) {} //OK }; void OnStart () {} A100 2021.11.03 19:37 #31003 mktr8591 # : 설명을 부탁드립니다: *1* 줄은 예상대로 컴파일러 오류를 생성합니다. 그리고 *2* 라인은 잘 컴파일되고 작동합니다. 왜요? 분명한 모순(const 값을 변경했음)을 보여줘야 합니다. int f( int &p ) { return p = !p; } struct X { const int i ; X( int i ) : i( i ) {} X( X& x ) : i( f(x.i) ) {} }; void OnStart () { X x1( 1 ); const int i = x1.i; { X x2 = x1; } Print ( i == x1.i ); //Результат: false - не может быть } 그리고 경험이 풍부한 사용자에게 추측 하고 개발자에게 제공합니다. fxsaber 2021.11.03 19:53 #31004 A100 # : 상수 값이 변경됨 거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼 mql5 언어의 특징, 미묘함 및 작업 방법 fxsaber , 2017.11.07 14:57 const 클래스 개체 의 필드를 변경하거나 const가 아닌 메서드를 호출할 수 있습니까? -할 수 있다! template < typename T> T GetMe( const T Ptr ) { return ((T)Ptr); } class A { public : int i; }; void OnStart () { const A a; GetMe(&a).i = 1 ; Print (a.i); // 1 } 이 기능 자체가 마음에 들지 않습니다. 무단 접근에 대비한 보험이라고 생각했습니다. 허나! 물론 const 구조에서는 이것이 작동하지 않습니다. 따라서 이 허점을 알고 있어야 합니다. mql5 언어의 특징, 미묘함 mql4 언어의 기능, 미묘함 OrderSend를 사용하여 MT5에서 올바르게 mktr8591 2021.11.03 20:01 #31005 A100 # : 분명한 모순(const 값을 변경했음)을 보여줘야 합니다. 그리고 경험이 풍부한 사용자에게 추측 하고 개발자에게 제공합니다. 그렇게까지 자세하게 다룰줄은 몰랐는데... mktr8591 2021.11.03 20:07 #31006 fxsaber # : 네. 그러나 귀하의 예에서는 const T에서 T로의 명시적(f번째를 통해) 변환이 있습니다. "합법화된" 허점. fxsaber 2021.11.03 20:10 #31007 mktr8591 # : 네. 그러나 귀하의 예에서는 const T에서 T로의 명시적(f번째를 통해) 변환이 있습니다. "합법화된" 허점. ((A*)(&a)).i = 1 ; mktr8591 2021.11.03 20:12 #31008 fxsaber # : 유사하게 - (const A*) A*로 변환합니다. fxsaber 2021.11.03 20:12 #31009 mktr8591 # : 유사하게 - (const A*) A*로 변환합니다. ((A)a).i = 1 ; A100 2021.11.03 20:17 #31010 fxsaber # : 귀하의 예에서 const를 non const로 명시적으로 변환하면 모든 것이 순수 합니다. 1...309430953096309730983099310031013102310331043105310631073108...3184 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
b3095에서 스크립트를 실행합니다.
f1(T* & Ptr) 오버로드를 제거하면 5개 호출 모두 void f1<const X>(const X*const)를 반환합니다.
일종의 기능인가요?
설명을 부탁드립니다:
*1* 줄은 예상대로 컴파일러 오류를 생성합니다.
그리고 *2* 라인은 잘 컴파일되고 작동합니다. 왜요?
설명을 부탁드립니다:
*1* 줄은 예상대로 컴파일러 오류를 생성합니다.
그리고 *2* 라인은 잘 컴파일되고 작동합니다. 왜요?
분명한 모순(const 값을 변경했음)을 보여줘야 합니다.
그리고 경험이 풍부한 사용자에게 추측 하고 개발자에게 제공합니다.상수 값이 변경됨
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
mql5 언어의 특징, 미묘함 및 작업 방법
fxsaber , 2017.11.07 14:57
const 클래스 개체 의 필드를 변경하거나 const가 아닌 메서드를 호출할 수 있습니까? -할 수 있다!이 기능 자체가 마음에 들지 않습니다. 무단 접근에 대비한 보험이라고 생각했습니다. 허나! 물론 const 구조에서는 이것이 작동하지 않습니다. 따라서 이 허점을 알고 있어야 합니다.
분명한 모순(const 값을 변경했음)을 보여줘야 합니다.
그리고 경험이 풍부한 사용자에게 추측 하고 개발자에게 제공합니다.네. 그러나 귀하의 예에서는 const T에서 T로의 명시적(f번째를 통해) 변환이 있습니다. "합법화된" 허점.
((A*)(&a)).i = 1 ;
유사하게 - (const A*) A*로 변환합니다.
((A)a).i = 1 ;
귀하의 예에서 const를 non const로 명시적으로 변환하면 모든 것이 순수 합니다.