오류, 버그, 질문 - 페이지 2663 1...265626572658265926602661266226632664266526662667266826692670...3184 새 코멘트 Viktor Levchenko 2020.03.01 18:22 #26621 주식 시장의 계산에 심각한 버그가 있지만 신경 쓰지 않고 의도적으로 또는 실수로이 문제가 눈에 띄지 않게됩니다. Aleksey Vyazmikin 2020.03.01 19:46 #26622 Aleksey Vyazmikin : 심각한 경우가 있습니다. 사용할 수 있는 논리가 누락되었습니다. 이러한 입력이 있는 기능이 있습니다. 따라서 이 함수는 때때로 값 769를 제공합니다. 첫 번째 인쇄의 주석을 제거하면 그러면 올바른 값이 반환됩니다. 함수가 잘려서 에러가 나는 시점 에 함수 가 호출될 때 활성화되지 않은 코드를 제거하는 것만으로도 에러가 나지 않습니다. 분명히 컴파일러 오류-전체 기능을 보낼 개발자, 그렇지 않으면 포럼에 적합하지 않습니다. 스위치를 통해 제작 - 모든 것이 작동합니다. 그래서 컴파일러에 있습니다. [삭제] 2020.03.02 09:30 #26623 저장소에 커밋할 수 없습니다... Artyom Trishkin 2020.03.02 10:00 #26624 Alexey Kozitsyn : 저장소에 커밋할 수 없습니다... 이미 처럼 벌었습니다. [삭제] 2020.03.02 10:01 #26625 Artyom Trishkin : 이미 처럼 벌었습니다. 네. Sergey Dzyublik 2020.03.02 16:29 #26626 MT5 버그(빌드 2345), 템플릿 함수에 전달된 포인터가 일부 작업에서는 포인터 데이터 유형으로, 다른 작업에서는 클래스 데이터 유형으로 작동할 때 이전에 설명한 버그 의 또 다른 표현입니다. #define PRINT(x) ; Print ( #x, ":" , string (x)) template < typename T> T test(T ptr){ PRINT( typename (ptr)); // A* PRINT( typename (T)); // A* T new_ptr = new T(); return (new_ptr); } class A{}; void OnStart (){ A a; test(&a); // Compile Error: OK } Sergey Dzyublik 2020.03.02 16:51 #26627 버그 MT5(빌드 2345), 템플릿 클래스 내에서 템플릿 함수를 선언할 때 재사용된 템플릿 유형 이름 확인이 수행되지 않아 예기치 않은 동작이 발생합니다. #define PRINT(x) ; Print ( #x, ":" , string (x)) template < typename T> class A{ public : template < typename T> // Compile Error: OK T test(T p){ B b = NULL ; PRINT( typename (B)); // C* PRINT( typename (b)); // C* return b; } //real template template < typename TT> TT test_real(TT p){ TT b = NULL ; PRINT( typename (TT)); PRINT( typename (b)); return b; } }; class B{}; class C : public B{}; void OnStart (){ A<B> a; B b; C c; C* c_ptr = a.test(&c); } Sergey Dzyublik 2020.03.02 17:17 #26628 클래스 템플릿 메서드로 작업할 때 MT5 버그(빌드 2345) 캡슐화 누락: class B{ private : template < typename T> void you_cannot_call_private_method(T n){ printf ( "Wow, Nice job." ); } }; void OnStart (){ B b; b.you_cannot_call_private_method( 1 ); // Wow, Nice job. } Sergey Dzyublik 2020.03.02 17:50 #26629 기본 클래스 생성자의 MT5 버그(빌드 2345)로 인해 기본 클래스 개체에 대한 포인터를 부모 클래스에 대한 포인터로 캐스팅하여 명시적 유형 변환을 수행하는 것이 불가능합니다. #define PRINT(x) ; Print ( #x, ":" , string (x)) template < typename T> class A{ T* virtual_call; public : A(T* ptr){ virtual_call = dynamic_cast <T*>(& this ); PRINT(virtual_call == NULL ); // true, virtual_call == NULL virtual_call = dynamic_cast <T*>(ptr); PRINT(virtual_call == NULL ); // false, virtual_call != NULL virtual_call = (T*)(& this ); // Execution Error: Incorrect casting of pointers. virtual_call = (T*)(ptr); // OK } template < typename TT> void test(TT n){ virtual_call.__test(n); } template < typename TT> void __test(TT n){ printf ( "AAAA" ); } }; class B : public A<B>{ public : B() : A(& this ){} template < typename TT> void __test(TT n){ printf ( "BBBB" ); } }; class C : public A<C>{ public : C() : A(& this ){} }; void OnStart (){ B b; b.test( 1 ); // should be "BBBB" C c; c.test( 1 ); // should be "AAAA" } 가상 템플릿 기능의 작업을 에뮬레이트하기 위해 "패턴"을 구현하려면 유형 상속 외에도 기본 클래스로 끌어야 하며 상위 클래스에 대한 포인터의 직접적인 값도 필요합니다. 좋지 않다 ... Stanislav Korotky 2020.03.03 10:42 #26630 이것을 컴파일하는 사람이 있습니까? class B {}; template < typename T> class A { static T *array; static void check() { T *ptr = array; // unresolved static variable 'A<B>::array' } }; class Y: public A<B> { }; template < typename T> static T *A::array; void OnStart () { Y y; } 뭐가 문제 야? 1...265626572658265926602661266226632664266526662667266826692670...3184 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
심각한 경우가 있습니다. 사용할 수 있는 논리가 누락되었습니다.
이러한 입력이 있는 기능이 있습니다.
따라서 이 함수는 때때로 값 769를 제공합니다.
첫 번째 인쇄의 주석을 제거하면
그러면 올바른 값이 반환됩니다.
함수가 잘려서 에러가 나는 시점 에 함수 가 호출될 때 활성화되지 않은 코드를 제거하는 것만으로도 에러가 나지 않습니다.
분명히 컴파일러 오류-전체 기능을 보낼 개발자, 그렇지 않으면 포럼에 적합하지 않습니다.
스위치를 통해 제작 - 모든 것이 작동합니다. 그래서 컴파일러에 있습니다.
저장소에 커밋할 수 없습니다...
이미 처럼 벌었습니다.
이미 처럼 벌었습니다.
네.
버그 MT5(빌드 2345), 템플릿 클래스 내에서 템플릿 함수를 선언할 때 재사용된 템플릿 유형 이름 확인이 수행되지 않아 예기치 않은 동작이 발생합니다.
가상 템플릿 기능의 작업을 에뮬레이트하기 위해 "패턴"을 구현하려면 유형 상속 외에도 기본 클래스로 끌어야 하며 상위 클래스에 대한 포인터의 직접적인 값도 필요합니다. 좋지 않다 ...
이것을 컴파일하는 사람이 있습니까?
뭐가 문제 야?