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

 
fxsaber :

OBJ_CHART를 생성하고 차트의 왼쪽 상단 모서리를 마우스로 드래그합니다. 드래그하는 동안 성공적인 결과와 함께 ObjectDelete가 호출 됩니다. MT5.

더. OBJ_CHART를 드래그하는 동안 해당 CHART 속성(예: ChartNavigate)을 변경하면 해당 시각화가 발생하지 않습니다.
 
이 항목과 관련이 없는 설명은 " 각 하위 창이 속한 표시기를 결정하는 방법 "으로 이동되었습니다.
 
A100 :

컴파일 중 오류:

빌드 1447에 도입됨
메시지 덕분에 전달된 매개변수의 constness에 대한 제어가 수정되었습니다.

이제 두 경우 모두 컴파일 오류가 발생합니다. 오류를 방지하려면 코드를 변경해야 합니다.
 template < typename T>
void f1( const T* const & a[] ) {}    << добавлена константность ссылки
class A {};
void f2( const A* const & a[] ) {}    << добавлена константность ссылки
class B {
         void g1() const { f1( a ); } //error: 'f1' - cannot to apply function template
         void g2() const { f2( a ); } //нормально
        A *a[];
};
 
константность ссылки

이것은 어디에서도 본 적이 없습니다. 이게 기준인가요?

 
Ilyas :
이제 두 경우 모두 컴파일 오류가 발생합니다. 오류를 방지하려면 코드를 변경해야 합니다.

이 모순도 확인하십시오 (여기, 반대로 - 오류는 아래에 있음)

 template < typename T>
void f1( const T& a[] ) {}
class A {};
void f2( const A& a[] ) {}
class B {
         void g1() const { f1( a ); } //нормально
         void g2() const { f2( a ); } //error: 'a' - parameter conversion not allowed
        A *a[];
};
 

MQL5에서 메모리는 어떻게 작동합니까?

예를 들어 다음 코드가 있습니다.

 class Alfa {}
class Beta
  {
private :
   Alfa  *ptr_a;
   Alfa   obj_a;
public :
   Beta( void ) { ptr_a = new Alfa(); }
  ~Beta( void ) { delete ptr_a; }
   Metod( void ) {...}
  }
//---

int OnInit ( void ) {
   Beta *ptr_obj = new Beta();
   Beta obj;
//---
   return INIT_SUCCEEDED ;
}
void OnDeinit ( const int reason) {
   delete ptr_obj;
}

"힙"에 있는 메모리에 따라 ptr_obj 개체에 할당되고 자동 메모리는 obj 개체에 할당됩니다. 그리고 MQL5 메모리 관리자의 작업이 다음 개체에 대해 명확한 경우:

1. ptr_obj 객체의 ptr_a 객체 아래에 메모리가 "힙"에 할당됩니다.

2. obj 객체의 obj_ 객체 아래에 메모리가 자동으로 할당됩니다.

다음과 같은 경우 MQL5 메모리 관리자의 작업이 구성되는 방식:

3. ptr_obj 객체의 obj_a 객체 가 위치할 메모리 영역

4. obj 객체의 ptr_a 객체는 메모리의 어느 영역에 위치할까요?

 
A100 :

이 모순도 확인하십시오 (여기는 반대입니다)

맞습니다. 여기에 입력할 때 T = A *
 
void f( const A* &Array[] );

이러한 전송을 통해 배열(및 크기)의 요소를 교환할 수 있지만 요소 자체를 변경할 수는 없습니다. 권리?

 void f( const A* const &Array[] );

그리고 여기서 요소(및 크기)는 장소에서 변경할 수 없습니다. 바르게?

 
fxsaber :

이것은 어디에서도 본 적이 없습니다. 이게 기준인가요?

쓰지 않도록 썼습니다. 상수 개체 에 대한 포인터의 상수 배열에 대한 참조가 있어야 합니다.
 
fxsaber :

이러한 전송을 통해 배열(및 크기)의 요소를 교환할 수 있지만 요소 자체를 변경할 수는 없습니다. 권리?

그리고 여기서 요소(및 크기)는 장소에서 변경할 수 없습니다. 바르게?

네 맞습니다.