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

 

사용자 지정 기호를 만들고 25년 분량의 일일 막대로 채웁니다. 이 값은 약 400kb여야 합니다. 그러나 .hcc 파일은 전체 크기가 15MB인 기호 폴더에 생성됩니다! 게다가 이 모든 작업은 약 20초가 걸립니다! 어떤 성문에도 들어가지 않는다... 이것을 어떻게 설명할 수 있을까?

 
Sergey Dzyublik :

템플릿 함수에 대한 포인터로 typedef를 선언할 수 있다는 사실에 놀랐습니다.
그러나 행복은 오래 가지 않았습니다.

내가 무슨 말 했는지
 

최근에 MT 작업 및 버그의 12가지 "기능"에 대한 정보가 제공되었습니다.
수정해야 하는지 여부를 어떻게 알 수 있습니까?
새 빌드가 릴리스될 때마다 모든 것을 테스트하겠다고 제안하지 마십시오.

(MT5(빌드 2057)에서 수정되지 않음) "전략 테스터: 2개의 패스가 계획되어 있지만 실제로는 "OnInit 치명적 오류"로 인해 패스의 무한 수 > 900개입니다."
(MT5(빌드 2057)에서 수정되지 않음) "동적 배열이 있는 구조에 대한 기본 할당 연산자의 일부로 배열 크기 필드의 값이 잘못되었습니다."
(MT5(build 2057)에서 수정되지 않음) "함수에서 값으로 클래스 개체를 반환할 때 컴파일러는 클래스의 기본 복사 생성자를 보지 않습니다."
(MT5(빌드 2057)에서 수정되지 않음) "템플릿 클래스 및 "복잡한" 구조에 대해 "자신에게" 유형 캐스트를 수행할 때 컴파일 오류가 발생합니다."
(MT5(build 2057)에서 수정되지 않음) "typedef로 작업할 때 명시적으로 특수화된 템플릿 함수를 사용하면 템플릿 함수 코드가 생성되지 않습니다."
(MT5(build 2057)에서 수정되지 않음) "typedef 내에서 동일한 함수 서명을 재사용할 때 컴파일 오류 ".
(MT5(빌드 2057)에서 수정되지 않음) "많은 문자열 조작 함수가 문자열의 NULL 문자에서 작동하지 않습니다(예: ShortArrayToString, StringInit, StringFill)".
(MT5(build 2057)에서 수정되지 않음) "StringSetLength 함수는 문자열의 길이를 "자르는" 방향으로만 작동하지만 늘리지는 않습니다."
(MT5(빌드 2057)에서 수정됨) " 전략 테스터: 750 "metatester64.exe" 프로세스 시작".
" 포럼 www.mql5.com, 사진이 있는 메시지를 편집할 때 이전 사진이 새 사진으로 대체되지 않습니다."


제안:
" 기본적으로 할당 연산자(복사 생성자)에 대한 코드 생성/제거를 강제할 수 있는 기능을 사용자에게 제공합니다."
"구조가 모든 유형의 개체에 대한 전체 복사 기능을 제공하는 것처럼 ArrayCopy 함수가 클래스 및 "복잡한" 구조를 복사하도록 허용합니다."
" 동적 어레이로 작업할 때 사용자에게 용량 값 을 읽고 설정할 수 있는 기능 제공 "

""시그널" 서비스의 인포그래픽 개선을 위한 변경 사항"

 
A100 :
내가 무슨 말 했는지

템플릿화된 typedef템플릿화된 클래스에서 typedef 를 사용하는 것은 다른 두 가지입니다.
두 번째 옵션은 작동하지만 다른 유형의 템플릿 클래스를 재사용할 때 네임스페이스 겹침 문제가 있습니다.

 
Alexey Navoykov :

사용자 지정 기호를 만들고 25년 분량의 일일 막대로 채웁니다. 이 값은 약 400kb여야 합니다. 그러나 .hcc 파일은 전체 크기가 15MB인 기호 폴더에 생성됩니다! 게다가 이 모든 작업은 약 20초가 걸립니다! 어떤 성문에도 들어가지 않는다... 이것을 어떻게 설명할 수 있을까?

기록된 내용을 확인하세요.

 
fxsaber :

기록에 무엇이 있는지 확인하십시오.

글쎄, 나는 hcc 형식을 몰라서 파일에 무엇이 있는지 확인할 수 없습니다. 그리고 터미널에는 일일 바가 표시됩니다. 더 작은 기간으로 전환할 때 동일한 막대가 표시됩니다. 분명히, 그것은 또한 처음에 모든 시간 프레임을 파일에 저장하므로 chtol... 나는 다른 모든 시간 프레임이 합성되는 분만 저장된다고 생각했습니다. 그리고 분 막대의 수는 이미 언급했듯이 일일 막대와 일치합니다. 총 약 7000 분 바가 있습니다.

저것들. 7000 * M1, 7000 * M2, 7000 * M3 등의 파일에 저장한다고 가정합니다. 최대 7000 * D1이면 결국 15MB가 될 것입니다. 그렇다면 이것은 완전한 헛소리입니다. 하지만 이것을 감안하더라도 왜 20초를 소비하는지는 불명! 수정: 약 5초(기존 이력 업데이트 시 20초).

 

포럼 사이트에서 문제가 발생했습니다. 최근 게시물을 볼 수 없습니다.
예를 들어, thisthis는 " 모든 게시물 "에서 누락되었습니다.
그리고 이전과 마찬가지로 몇 달 전에 등급이 6000 이상이었습니다. 모르겠지만 시간이 지남에 따라 활동량이 적어 등급이 낮아질 수 있습니다.

 
class A{
public :
   struct AA{
       uchar data[ 8 ];
   };
   static AA obj;
};

AA A::obj = { 0 };     // OK


template < typename T>
class B{
public :
   struct BB{
      T data[ 8 ];
   };
   static BB obj;
};

template < typename T>
BB B::obj = { 0 };       //'BB' - declaration without type    




void OnStart (){  
   ArrayPrint (A::obj.data);
   //ArrayPrint(BB<int>::obj.data);
}


현재 템플릿 클래스 내부에 선언된 정적 변수 를 사용할 수 없습니다.
네임스페이스의 도입으로 이 제한을 우회할 수 있습니까?

 
Sergey Dzyublik :


현재 템플릿 클래스 내부에 선언된 정적 변수 를 사용할 수 없습니다.
네임스페이스의 도입으로 이 제한을 우회할 수 있습니까?

변수에 관한 것이 아닙니다. 그는 BB 클래스를 볼 수 없습니다. 템플릿 < typename T> class BB로 클래스 B 외부로 이동해야 합니다.

 
Alexey Navoykov :

변수에 관한 것이 아닙니다. 그는 BB 클래스를 볼 수 없습니다. 템플릿 < typename T> class BB로 클래스 B 외부로 이동해야 합니다.

게시물은 개발자에게 전달되었으므로 원하는 경우 상자에서 지원을 "샤마니화"했습니다.

다시 말하지만, 문제는 템플릿 클래스 내부에 선언된 정적 변수 를 사용할 수 없다는 점입니다.
typedef가 있는 경우 무엇을 하라고 제안합니까?

 
class A{
public :
   typedef void (*callback_A)();
   static callback_A f_ptr;

};
callback_A A::f_ptr = NULL ;                  // Ok


template < typename T>
class B{
public :
   typedef T (*callback_B)();
   static callback_B f_ptr;
};
template < typename T>
callback_B B::f_ptr = NULL ;                  //'callback_B' - declaration without type	

void func_A(){PRINT( __FUNCSIG__ );}
int func_B(){PRINT( __FUNCSIG__ ); return 0 ;}

void OnStart (){  
   A::f_ptr = func_A;
   A::f_ptr();

   //B<int>::f_ptr = func_B;
   //B<int>::f_ptr();
}