이전에 설명한 버그 - "정의되지 않은 동작, 내부 유형 "C"로 여러 번 래핑된 복잡한 객체를 생성하고 거기서 완전히 다른 데이터 유형, 아마도 "B", 아마도 "int"로 판명되었습니다. , 당신이 원하는 무엇이든 ...". 사실, 현지화, 재생산 및 해결 방법 검색에 하루를 보냈지만 불행히도 모두 소용이 없었습니다... 더미 템플릿 매개변수를 사용하기 위해 이전에 제안된 해결 방법 은 아래 예에서 작동하지 않는 것으로 판명되었습니다.
template < typename _Tp, typename _Opt>
struct It_g{
class Opt : public _Opt{};
_Tp p;
};
template < typename _Tp>
class A_g{
public :
struct It : public It_g<_Tp, Opt_g<_Tp>>{};
};
template < typename _Tp>
class V{
public :
struct It : public A_g<_Tp>::It{};
It b;
};
template < typename _Tp>
class Opt_g{
template < typename _It>
staticvoid test(_It &it){
printf ( typename (_Tp)); // intprintf ( typename (it.p)); // ClassA*
_Tp p = it.p; // Compiler Error: '=' - illegal operation use
};
};
template < typename T>
class GetStructType{
public :
struct type : public T{};
};
template < typename _It>
void test(_It &it){
GetStructType<_It>::type::Opt::test(it);
}
class ClassA{};
voidOnStart (){
V< int > v1;
test(v1.b);
V<ClassA*> v2;
test(v2.b);
V< int >::It it3;
test(it3);
V<ClassA*>::It it4;
test(it4);
}
유일한 작동 솔루션은 "자체 제작"오토 유형을 사용하여 얻었지만 실제 코드의 속도로 제로 이익으로 컴파일하려면 엄청난 비용이 듭니다. 도와주세요. 누군가 이 문제를 해결하는 방법을 알고 있을 수 있습니다.
템플릿 함수/클래스 캐시의 결함: ( MT5(빌드 2361)에 의해 수정 되지 않음) *** ( up ) 정의되지 않은 동작, 내부 유형 "C"를 사용하여 복잡한 다중 래핑된 개체를 만들고 거기서 완전히 다른 데이터 유형, 아마도 "B ", 아마도 "int", 원하는... (MT5(빌드 2361)에 의해 수정되지 않음 ) * 컴파일 오류, 함수 포인터 인수를 const ref 템플릿으로 전달할 때 발생하는 버그. ( MT5(build 2361)로 수정되지 않음 ) * 컴파일 오류, B<void*> 개체 뒤에 B<int> 개체가 생성될 수 있지만 이전에 완료되면 컴파일 오류가 발생합니다.
템플릿 기능/클래스 작업의 결함: ( MT5(build 2361)에 의해 수정되지 않음 ) *** ( up ) 컴파일 오류, 템플릿 함수 내부의 버그, 명시적 캐스트 작업의 일부로 전달된 포인터가 포인터처럼 다른 경우에는 클래스처럼 작동합니다. (MT5(빌드 2361)로 수정되지 않음 ) ** 컴파일 오류, 내부 클래스 사용 시 템플릿 클래스 코드 생성 버그. (MT5(빌드 2361)에 의해 수정되지 않음 ) ** 컴파일 오류, 템플릿 함수의 템플릿 매개변수에 대한 내부 클래스에 액세스하려고 할 때 발생하는 버그. (MT5(빌드 2361)로 수정되지 않음 ) * 컴파일 오류, 템플릿 메서드/클래스 생성 시 버그, 템플릿 매개변수의 "자동 교체" 프로세스가 범위를 넘어 메인 프로그램 코드로 넘어갑니다. (MT5(빌드 2361)에 의해 수정되지 않음 ) * 컴파일 오류, 템플릿 클래스가 템플릿 메서드의 반환 값으로 작동할 때 템플릿 클래스 코드가 자동으로 생성되지 않는 버그입니다. (MT5(빌드 2361)에 의해 수정되지 않음 ) * 컴파일 오류, 내부 구조체를 템플릿 함수에 전달할 때의 버그, 결과 데이터 형식은 템플릿 클래스의 다른 내부 구조체에 대한 기본 데이터 형식으로 사용할 수 없습니다. (MT5(빌드 2361)에 의해 수정되지 않음 ) * 컴파일 오류, 오버로드된 비 템플릿 함수에서 호출이 이루어질 때 명시적 인수 유형으로 템플릿 함수를 호출할 때 발생하는 버그. ( MT5(빌드 2361)로 수정되지 않음) 컴파일 오류, 내부 클래스 정의 시 버그 - 기본 클래스를 지정할 때 전역 네임스페이스를 명시적으로 참조할 수 없습니다. (MT5(빌드 2361)로 수정되지 않음 ) *** (신규) 컴파일 오류, 부적절한 경고 출력에 대한 주요 불만 사항은 "사용되지 않는 동작, 향후 MQL 컴파일러 버전에서 숨겨진 메서드 호출이 비활성화됩니다"입니다. 현재 구현은 참새에 대포 사격입니다. ( MT5(빌드 2361)에 의해 수정되지 않음) ** (신규) 컴파일 오류, 반환 값이 템플릿 클래스 내부에 위치한 내부 클래스인 경우 템플릿 함수의 반환 값과 관련된 버그로, 매개변수 유형은 해당 유형에 따라 지정됩니다. 템플릿 함수 인수. ( MT5(build 2361)에 의해 수정되지 않음) * (new)Compile Error, 템플릿 클래스 내에서 템플릿 함수를 선언할 때 재사용된 템플릿 유형 이름을 확인하지 않아 예기치 않은 동작이 발생합니다. ( MT5(build 2361)에 의해 수정되지 않음) * (new) 런타임 오류, 기본 클래스 생성자에서 명시적 형식 변환을 수행하여 기본 클래스 개체에 대한 포인터를 부모 클래스에 대한 포인터로 캐스팅할 수 없습니다. ( MT5(빌드 2361)에 의해 수정되지 않음) (신규) 컴파일 오류, 개체가 템플릿 클래스/구조체일 때 "제자리에서 생성된" 개체 반환과 관련된 많은 버그.
C++와 비교하여 MQL에서 오버로드된 함수 호출 우선순위의 불일치와 관련된 결함: (MT5(빌드 2361)에 의해 수정되지 않음 ) *** 컴파일 오류, 클래스 A <= B <= C <= D의 상속이 있고 두 개의 오버로딩 함수가 구현되는 경우(예: 매개변수 A*가 있는 함수 및 두 번째로 B*를 사용한 다음 MQL에서 이러한 C* 또는 D* 개체의 함수로 전달하면 "모호 오버로드된 함수 호출" 컴파일 오류가 발생합니다. (MT5(빌드 2361)에 의해 수정되지 않음 ) ** 런타임, 오버로드된 템플릿 함수 호출에 대한 우선 순위 불일치. ( MT5(build 2361)에 의해 수정되지 않음 ) ** 컴파일 오류, 오버로드된 템플릿 함수에 대한 호출의 우선 순위는 실제로 템플릿 매개변수의 유형에 따라 달라지며 이론상 컴파일 결과에 영향을 미치지 않아야 합니다. ( MT5(build 2361)에 의해 수정되지 않음 ) ** 컴파일 오류, 템플릿 함수 코드 생성 시 전달된 매개 변수에 적합한 서명을 가진 오버로드된 템플릿 함수가 있음에도 불구하고 컴파일 오류가 발생합니다.
기능의 느린 실행과 관련된 결함, 코드 최적화 프로그램의 작업: ( MT5(빌드 2361)에 의해 수정되지 않음 ) ** (신규) ArrayResize를 사용하여 배열에 하나의 요소를 추가할 때 런타임, 큰 오버헤드, 예를 들어 최대 7 구조에 대한 메모리가 미리 예약되어 있음에도 불구하고 몇 배 더 느립니다.
제안: 링크 - 리터럴 및 임시 변수를 const ref 함수 인수로 전달하는 기능 제공에 대해. 링크 - "프로젝트" 탭에서 프로젝트 파일을 이동할 때 열려 있고 ME 탭에 있는 파일을 이동하려면 위치 경로를 자동으로 업데이트합니다. 링크 - MQL typedef 선언에 기능을 도입해야 할 필요성에 대해. 링크 - 기본 복사 생성자 및 할당 연산자 생성을 강제하는 기능 제공에 대해.
이전에 설명한 버그 - "정의되지 않은 동작, 내부 유형 "C"로 여러 번 래핑된 복잡한 객체를 생성하고 거기서 완전히 다른 데이터 유형, 아마도 "B", 아마도 "int"로 판명되었습니다. , 당신이 원하는 무엇이든 ...". 사실, 현지화, 재생산 및 해결 방법 검색에 하루를 보냈지만 불행히도 모두 소용이 없었습니다...
마침내 수용 가능한 솔루션을 찾았습니다. 정적 클래스 멤버를 사용하면 위의 버그를 우회할 수 있습니다.
template < typename _Tp, typename _Opt>
struct It_g{
class Opt : public _Opt{};
_Tp p;
static Opt opt;
};
template < typename _Tp, typename _Opt>
static It_g::Opt It_g::opt;template < typename _Tp>
class A_g{
public :
struct It : public It_g<_Tp, Opt_g<_Tp>>{};
};
template < typename _Tp>
class V{
public :
struct It : public A_g<_Tp>::It{};
It b;
};
template < typename _Tp>
class Opt_g{
template < typename _It>
staticvoid test(_It &it){
printf ( typename (_Tp)); // ClassA*printf ( typename (it.p)); // ClassA*
_Tp p = it.p; // OK
};
};
template < typename _It>
void test(_It &it){
it.opt.test(it);
}
class ClassA{};
voidOnStart (){
V< int > v1;
test(v1.b);
V<ClassA*> v2;
test(v2.b);
V< int >::It it3;
test(it3);
V<ClassA*>::It it4;
test(it4);
}
테스터 오류(글쎄, 아니면 내가 이해를 멈췄다)
이전에 설명한 버그 - "정의되지 않은 동작, 내부 유형 "C"로 여러 번 래핑된 복잡한 객체를 생성하고 거기서 완전히 다른 데이터 유형, 아마도 "B", 아마도 "int"로 판명되었습니다. , 당신이 원하는 무엇이든 ...".
사실, 현지화, 재생산 및 해결 방법 검색에 하루를 보냈지만 불행히도 모두 소용이 없었습니다...
더미 템플릿 매개변수를 사용하기 위해 이전에 제안된 해결 방법 은 아래 예에서 작동하지 않는 것으로 판명되었습니다.
유일한 작동 솔루션은 "자체 제작"오토 유형을 사용하여 얻었지만 실제 코드의 속도로 제로 이익으로 컴파일하려면 엄청난 비용이 듭니다.
도와주세요. 누군가 이 문제를 해결하는 방법을 알고 있을 수 있습니다.
테스터 오류(글쎄, 아니면 내가 이해를 멈췄다)
아키텍처상의 이유로 시각화 도우미가 항상 현재 상태를 표시하는 것은 아닙니다.
아키텍처상의 이유로 시각화 도우미가 항상 현재 상태를 표시하는 것은 아닙니다.
템플릿 함수/클래스 캐시의 결함:
( MT5(빌드 2361)에 의해 수정 되지 않음) *** ( up ) 정의되지 않은 동작, 내부 유형 "C"를 사용하여 복잡한 다중 래핑된 개체를 만들고 거기서 완전히 다른 데이터 유형, 아마도 "B ", 아마도 "int", 원하는...
(MT5(빌드 2361)에 의해 수정되지 않음 ) * 컴파일 오류, 함수 포인터 인수를 const ref 템플릿으로 전달할 때 발생하는 버그.
( MT5(build 2361)로 수정되지 않음 ) * 컴파일 오류, B<void*> 개체 뒤에 B<int> 개체가 생성될 수 있지만 이전에 완료되면 컴파일 오류가 발생합니다.
템플릿 기능/클래스 작업의 결함:
( MT5(build 2361)에 의해 수정되지 않음 ) *** ( up ) 컴파일 오류, 템플릿 함수 내부의 버그, 명시적 캐스트 작업의 일부로 전달된 포인터가 포인터처럼 다른 경우에는 클래스처럼 작동합니다.
(MT5(빌드 2361)로 수정되지 않음 ) ** 컴파일 오류, 내부 클래스 사용 시 템플릿 클래스 코드 생성 버그.
(MT5(빌드 2361)에 의해 수정되지 않음 ) ** 컴파일 오류, 템플릿 함수의 템플릿 매개변수에 대한 내부 클래스에 액세스하려고 할 때 발생하는 버그.
(MT5(빌드 2361)로 수정되지 않음 ) * 컴파일 오류, 템플릿 메서드/클래스 생성 시 버그, 템플릿 매개변수의 "자동 교체" 프로세스가 범위를 넘어 메인 프로그램 코드로 넘어갑니다.
(MT5(빌드 2361)에 의해 수정되지 않음 ) * 컴파일 오류, 템플릿 클래스가 템플릿 메서드의 반환 값으로 작동할 때 템플릿 클래스 코드가 자동으로 생성되지 않는 버그입니다.
(MT5(빌드 2361)에 의해 수정되지 않음 ) * 컴파일 오류, 내부 구조체를 템플릿 함수에 전달할 때의 버그, 결과 데이터 형식은 템플릿 클래스의 다른 내부 구조체에 대한 기본 데이터 형식으로 사용할 수 없습니다.
(MT5(빌드 2361)에 의해 수정되지 않음 ) * 컴파일 오류, 오버로드된 비 템플릿 함수에서 호출이 이루어질 때 명시적 인수 유형으로 템플릿 함수를 호출할 때 발생하는 버그.
( MT5(빌드 2361)로 수정되지 않음 ) 컴파일 오류, 내부 클래스 정의 시 버그 - 기본 클래스를 지정할 때 전역 네임스페이스를 명시적으로 참조할 수 없습니다.
(MT5(빌드 2361)로 수정되지 않음 ) *** (신규) 컴파일 오류, 부적절한 경고 출력에 대한 주요 불만 사항은 "사용되지 않는 동작, 향후 MQL 컴파일러 버전에서 숨겨진 메서드 호출이 비활성화됩니다"입니다. 현재 구현은 참새에 대포 사격입니다.
( MT5(빌드 2361)에 의해 수정되지 않음 ) ** (신규) 컴파일 오류, 반환 값이 템플릿 클래스 내부에 위치한 내부 클래스인 경우 템플릿 함수의 반환 값과 관련된 버그로, 매개변수 유형은 해당 유형에 따라 지정됩니다. 템플릿 함수 인수.
( MT5(build 2361)에 의해 수정되지 않음 ) * (new) Compile Error , 템플릿 클래스 내에서 템플릿 함수를 선언할 때 재사용된 템플릿 유형 이름을 확인하지 않아 예기치 않은 동작이 발생합니다.
( MT5(build 2361)에 의해 수정되지 않음 ) * (new) 런타임 오류, 기본 클래스 생성자에서 명시적 형식 변환을 수행하여 기본 클래스 개체에 대한 포인터를 부모 클래스에 대한 포인터로 캐스팅할 수 없습니다.
( MT5(빌드 2361)에 의해 수정되지 않음 ) (신규) 컴파일 오류, 개체가 템플릿 클래스/구조체일 때 "제자리에서 생성된" 개체 반환과 관련된 많은 버그.
C++와 비교하여 MQL에서 오버로드된 함수 호출 우선순위의 불일치와 관련된 결함:
(MT5(빌드 2361)에 의해 수정되지 않음 ) *** 컴파일 오류, 클래스 A <= B <= C <= D의 상속이 있고 두 개의 오버로딩 함수가 구현되는 경우(예: 매개변수 A*가 있는 함수 및 두 번째로 B*를 사용한 다음 MQL에서 이러한 C* 또는 D* 개체의 함수로 전달하면 "모호 오버로드된 함수 호출" 컴파일 오류가 발생합니다.
(MT5(빌드 2361)에 의해 수정되지 않음 ) ** 런타임, 오버로드된 템플릿 함수 호출에 대한 우선 순위 불일치.
( MT5(build 2361)에 의해 수정되지 않음 ) ** 컴파일 오류, 오버로드된 템플릿 함수에 대한 호출의 우선 순위는 실제로 템플릿 매개변수의 유형에 따라 달라지며 이론상 컴파일 결과에 영향을 미치지 않아야 합니다.
( MT5(build 2361)에 의해 수정되지 않음 ) ** 컴파일 오류, 템플릿 함수 코드 생성 시 전달된 매개 변수에 적합한 서명을 가진 오버로드된 템플릿 함수가 있음에도 불구하고 컴파일 오류가 발생합니다.
기능의 느린 실행과 관련된 결함, 코드 최적화 프로그램의 작업:
( MT5(빌드 2361)에 의해 수정되지 않음 ) ** (신규) ArrayResize를 사용하여 배열에 하나의 요소를 추가할 때 런타임, 큰 오버헤드, 예를 들어 최대 7 구조에 대한 메모리가 미리 예약되어 있음에도 불구하고 몇 배 더 느립니다.
제안:
링크 - 리터럴 및 임시 변수를 const ref 함수 인수로 전달하는 기능 제공에 대해.
링크 - "프로젝트" 탭에서 프로젝트 파일을 이동할 때 열려 있고 ME 탭에 있는 파일을 이동하려면 위치 경로를 자동으로 업데이트합니다.
링크 - MQL typedef 선언에 기능을 도입해야 할 필요성에 대해.
링크 - 기본 복사 생성자 및 할당 연산자 생성을 강제하는 기능 제공에 대해.
아키텍처상의 이유로 시각화 도우미가 항상 현재 상태를 표시하는 것은 아닙니다.
감사합니다. 명심하겠습니다.
일시 중지 후 몇 개의 틱(F12)을 시작하여 처리됩니다.
일시 중지 후 몇 개의 틱(F12)을 시작하여 처리됩니다.
고맙습니다. 노력하겠습니다.
이전에 설명한 버그 - "정의되지 않은 동작, 내부 유형 "C"로 여러 번 래핑된 복잡한 객체를 생성하고 거기서 완전히 다른 데이터 유형, 아마도 "B", 아마도 "int"로 판명되었습니다. , 당신이 원하는 무엇이든 ...".
사실, 현지화, 재생산 및 해결 방법 검색에 하루를 보냈지만 불행히도 모두 소용이 없었습니다...
마침내 수용 가능한 솔루션을 찾았습니다.
정적 클래스 멤버를 사용하면 위의 버그를 우회할 수 있습니다.
이 저장 오류를 수정하는 방법은 무엇입니까?
점점 더 많은 파일을 저장하는 것을 점차적으로 거부합니다. 곧 저장된 모든 항목을 업데이트할 수 없게 됩니다.
매수 지정가 주문 및 매도 지정가 지정가 주문에 대한 툴팁에서 이익/손실이 잘못 계산되었습니다.