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

 

컴파일 중 오류

 #define MACRO( x )      ((x) + 2 )
struct A {
        A( int , int ) {}
};
template < typename T>
struct B {
         static A a;
};
template < typename T>
A B::a( MACRO( 1 ), 2 ); //error: '(' - declaration without type
그리고 템플릿 없이 < typename T> - 괜찮습니다 ... 하지만 차이점은 무엇입니까?
 
A100 :

컴파일 중 오류

그리고 템플릿 없이 < typename T> - 괜찮습니다 ... 하지만 차이점은 무엇입니까?

추가할 사항입니다. 매크로 대괄호

 struct A {
        A( int ) {}
};

template < typename T>
struct B {
         static A a;
};
template < typename T>
A B::a( ( 0 ) );

제거되면 컴파일됩니다.

 
fxsaber :

추가할 사항입니다. 매크로 대괄호

제거되면 컴파일됩니다.

template<typename T>를 제거하면 - 또한 컴파일됩니다(대괄호 포함)
 
A100 :

.log 파일 %AppData%\MetaQuotes\Terminal\...\MQL5\Logs\YYYYMMDD.log가 즉시 업데이트되지 않습니다.

업데이트는 터미널을 다시 시작한 후 또는 보기 메뉴를 선택한 경우에만 발생합니다. 다시 로드하지 않고 하루의 시작부터 보기를 선택하지 않으면 해당 파일이 비어 있습니다.

이전에는 모든 것이 작동했으며(MetaEditor 자체에서 열린 YYYYMMDD.log 파일도 전문가 탭에 줄이 표시된 후 몇 초 후에 업데이트됨) 불필요한 명확하지 않은 작업을 수행할 필요가 없었습니다.

IMHO, 이것은 로그의 크기가 작은 경우 항상 해당됩니다(포럼의 어딘가에 캐시 재설정이 시작되는 크기에 대한 정보가 있었습니다). 플래시를 디스크로 초기화하기 위해 항상 컨텍스트 메뉴 를 호출해야 했습니다.

 
Stanislav Korotky :

IMHO, 이것은 로그의 크기가 작은 경우 항상 해당됩니다(포럼의 어딘가에 캐시 재설정이 시작되는 크기에 대한 정보가 있었습니다). 플래시를 디스크로 초기화하기 위해 항상 컨텍스트 메뉴를 호출해야 했습니다.

나는 당신의 IMHO의 의미를 잘 이해하지 못합니다. 빌드 <= 1596(32비트)을 선택하고 확인합니다(한 줄이라도 즉시 .log 파일에 출력[5-10초]). 1분전에 확인했는데

[어떤 캐시? 항상 뭐? 어딘가에 뭔가 있었어!?!]

전문가 탭과 MQL5\Logs\ 폴더에 대해 이야기하고 있습니다.

 
A100 :
template<typename T>를 제거하면 - 또한 컴파일됩니다(대괄호 포함)

글쎄, 이것은 "모든 것을 제거하면 컴파일됩니다"라는 범주의 문구입니다.

템플릿 오류의 원인에 대한 것이었습니다. 그 이유는 추가가 있는 상황에서 템플릿 구성을 구문 분석할 때 컴파일러의 잘못된 동작 때문입니다. 괄호. 템플릿을 구현한 사람은 문제가 어디에 있고 왜 문제가 발생했는지 즉시 알 수 있습니다.

 

안녕하세요. 작업은 별도의 창에 두 개의 iMACD_1 색상 표시기 , 신호 라인 및 iMACD_2를 표시하는 것입니다. 다음은 코드의 일부입니다.

색인 생성

   SetIndexBuffer ( 0 ,MACDBuffer_1, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,buffer_color_histogram, INDICATOR_COLOR_INDEX );
   SetIndexBuffer ( 2 ,Signal_Line, INDICATOR_DATA );
   SetIndexBuffer ( 3 ,MACDBuffer_2, INDICATOR_DATA );

지표에 대한 포인터를 얻었습니다.

 handle_1= iMACD (name,period,fast_ema_period,slow_ema_period,signal_period,applied_price); 
 handle_2= iMACD (name_,period_,fast_ema_period_,slow_ema_period_,signal_period_,applied_price_);

그리고 기적)))

이론에 따르면 지표를 표시해야 합니다.

       if ( CopyBuffer (handle_1, 0 , 0 ,values_to_copy,MACDBuffer_1)< 0 ) return ( 0 );
       if ( CopyBuffer (handle_1, 1 , 0 ,values_to_copy,Signal_Line)< 0 ) return ( 0 );
       if ( CopyBuffer (handle_2, 3 , 0 ,values_to_copy,MACDBuffer_2)< 0 ) return ( 0 );

작동하지 않습니다!!!

하지만 이렇게

      if ( CopyBuffer (handle_1, 0 , 0 ,values_to_copy,MACDBuffer_1)< 0 ) return ( 0 );
       if ( CopyBuffer (handle_1, 1 , 0 ,values_to_copy,Signal_Line)< 0 ) return ( 0 );
       if ( CopyBuffer (handle_2, 0 , 0 ,values_to_copy,MACDBuffer_2)< 0 ) return ( 0 );

작동하지만 표시기 버퍼 수의 문제가 무엇인지 이해할 수 없습니다. 미리 감사드립니다 !!!

 

컴파일 중 오류

 template < typename T>
struct A {
         static int a1;
         static int a2;
};
template < typename T>
int A::a1;
template < typename T>
int A::a2;
struct B : A< int > {
         void f1() { Print ( A< int >::a1 ); } //unresolved static variable 'A<int>::a1'
         void f2() { Print (         a2 ); } //unresolved static variable 'B::a2'
};

그리고 템플릿 < typename T> 없이도 괜찮습니다.

 
vitrix :

안녕하세요 여러분, 작업은 별도의 창에 두 개의 iMACD_1 색상 표시기 , 신호 라인 및 iMACD_2를 표시하는 것입니다. 다음은 코드의 일부입니다.

색인 생성

지표에 대한 포인터를 얻었습니다.

그리고 기적)))

이론에 따르면 지표를 표시해야 합니다.

작동하지 않습니다!!!

하지만 이렇게

작동하지만 표시기 버퍼 수의 문제가 무엇인지 이해할 수 없습니다. 미리 감사드립니다 !!!


다음 에 메시지 에 코드를 삽입하는 방법을 기억하십시오(메시지를 수정했습니다).

둘째, iMACD 표시기에는 "0" - MAIN_LINE, "1" - SIGNAL_LINE의 두 가지 버퍼만 있습니다. 즉, 지표 값을 얻는 것은 다음과 같습니다.

   CopyBuffer (handle_iMACD,MAIN_LINE или SIGNAL_LINE,index - номер буфера с которого начинаем копирование, values_to_copy ,buffer)
 
A100 :

컴파일 중 오류

그리고 템플릿 < typename T> 없이도 괜찮습니다.

 template < typename T>
struct A {
         static int a1;
         static int a2;
};
template < typename T>
int A::a1 = 0 ;
template < typename T>
int A::a2 = 0 ;
struct B : A< int > {
         void f1() { Print ( A< int >::a1 ); } //unresolved static variable 'A<int>::a1'
         void f2() { Print (         a2 ); } //unresolved static variable 'B::a2'
};