OOP, mql5의 템플릿 및 매크로, 미묘함 및 사용 기술 - 페이지 25

 

fxsaber :

아마도 그러한 상황에서 일부 컴파일러는 경고를 발행합니다.

지정자는 개체 전체가 아니라 참조를 참조하며 모든 것이 합법적입니다. 컴파일러가 맹세해야 하는 이유는 무엇입니까?

 
TheXpert :

지정자는 개체 전체가 아니라 참조를 참조하며 모든 것이 합법적입니다. 컴파일러가 맹세해야 하는 이유는 무엇입니까?

아마, 그렇다면 여기에 학대는 없었을 것입니다.

 void g1( A& ) {}
void g2( const A& ) {}

void OnStart ()
{
   const A a;
  
  g1(a); // 'a' - constant variable cannot be passed as reference
  g2(a); // OK
}
 
fxsaber :

아마, 그렇다면 여기에 학대는 없었을 것입니다.

그리고 여기서 객체는 상수이며 상수 객체 에 대해 상수가 아닌 참조가 있을 수 없다는 것이 논리적입니다.

 
TheXpert :

그리고 여기서 객체는 상수이며 상수 객체 에 대해 상수가 아닌 참조가 있을 수 없다는 것이 논리적입니다.

상수 객체 에 대한 참조를 만드는 방법은 무엇입니까?

 
fxsaber :

상수 객체 에 대한 참조를 만드는 방법은 무엇입니까?

 void g1( A& ) {}
void g1( const A& ){}
void g2( const A& ) {}

void OnStart ()
{
   const A a;
  
  g1(a);
  g2(a);
}

과부하를 추가하십시오.

 
Vladimir Simakov :

과부하를 추가하십시오.

이러한 오버로드는 상수 참조에 대한 오버로드가 아닌가요?

 
fxsaber :

이러한 오버로드는 상수 참조에 대한 오버로드가 아닌가요?

그리고 무엇을 하고 싶습니까?

 
fxsaber :

이러한 오버로드는 상수 참조에 대한 오버로드가 아닌가요?

컴파일러가 첫 번째 예제에서 맹세하기를 원하면 모든 것이 합법적이기 때문에 작동하지 않습니다. 참조로 개체 인스턴스를 변경하지 않고 메서드가 호출되는 개체 인스턴스를 변경하지만 그것이 하나의 동일한 객체가 될 수 있다는 사실, 그래서 이것은 컴파일러 문제가 아니라 프로그래머의 골칫거리입니다.

클래스의 경우 다음 트릭을 수행할 수 있습니다(구조의 경우 작동하지 않음).

 class A
{
   int i;
public :
   void f( const A &Value )  
  {
     Print (Value.i); // 0
    
     if (& this !=&Value) this .i = Value.i + 1 ;
    
     Print (Value.i); // 1
  }
};

void OnStart ()
{
  A a;
  
  a.f(a);
}
 
Vladimir Simakov :

컴파일러가 첫 번째 예제에서 맹세하기를 원하면 모든 것이 합법적이기 때문에 작동하지 않습니다.

이것은 합법성에 관한 것이 아니라 const 수정자가 객체의 불변성을 보장하지 않는다는 사실에 관한 것입니다.

 

ORDER_TIME_SETUP_MSC 값과 일치하는 것이 가능하다면 보류 중인 것은 의미가 없습니다.


거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

라이브러리: MT4Orders

fxsaber , 2020.02.27 09:40

 0 - 348806 : 00 : 01 : 57.311
1 - 348530 : 00 : 01 : 39.027
2 - 348494 : 00 : 01 : 15.259
3 - 348406 : 00 : 01 : 07.671
4 - 348950 : 00 : 01 : 04.869
5 - 348960 : 00 : 01 : 02.888
6 - 348814 : 00 : 01 : 00.654
7 - 348392 : 00 : 01 : 00.642
8 - 348508 : 00 : 00 : 54.515
9 - 348550 : 00 : 00 : 54.467


실행 중인 계정에서 최대 2분 실행. 여기에서 기사를 공유하세요. 스크립트는 라이브러리를 사용하지 않으며 Netting/Hedge에 적합합니다.