초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 179

 
Reshetov :

이것은 자신에 대한 포인터가 아니라 개체 구현의 필드 식별자와 연결된 포인터입니다.

저것들. 객체의 어떤 메소드에서는 필드와 동일한 식별자를 갖는 지역 변수가 있을 수 있으며, 이 경우 이를 이용하여 객체의 필드에 대한 포인터와 지역 변수에 대한 포인터를 구별할 수 있다.

어떤 목적으로 필요할 수 있습니까? 그 예가 될 수 있습니까?
 
Barbarian2 :
어떤 목적으로 필요할 수 있습니까? 그 예가 될 수 있습니까?
이것은 생성자에서 인수 값이 객체의 필드에 할당되기 때문에 새로운 식별자를 발명하는 것을 피하기 위해 클래스 생성자 에서 가장 자주 사용됩니다.
 
Barbarian2 :
그리고 어떤 목적을 위해 필요할 수 있습니까? 그 예가 될 수 있습니까?
 class node
{
   public :
       void LinkWithNode(node* childNode)
      {
           if (CheckPoint(linkNode) != POINTER_INVALID )
             this .childNode = childNode;
      }
   private :
      node* childNode;
};

class LineNode : node
{
   public :
      LineNode(node* parentNode)
      {
         parentNode.LinkWithNode( GetPointer ( this ));
      }
};

이 경우 LineNode를 생성할 때 현재 LineNode 인스턴스를 소유할 부모 노드를 지정해야 합니다. 그 후에 부모 노드는 참조하여 이 인스턴스에 액세스할 수 있습니다. 이 예에서 this라는 단어는 두 번 사용됩니다. 첫 번째 경우, this라는 단어는 childNode 변수가 현재 클래스를 구체적으로 참조한다는 것을 지정하는 반면, 이것이 없는 childNode는 LinkWithNode 메서드에서 같은 이름의 변수입니다. 두 번째 경우에는 클래스의 현재 인스턴스가 반환되고 GetPointer는 해당 인스턴스에 대한 포인터를 가져 옵니다. 따라서 생성 시 이미 LineNode를 바인딩하는 것이 가능합니다.

 
C-4 :

이 경우 LineNode를 생성할 때 현재 LineNode 인스턴스를 소유할 부모 노드를 지정해야 합니다. 그 후에 부모 노드는 참조하여 이 인스턴스에 액세스할 수 있습니다. 이 예에서 this라는 단어는 두 번 사용됩니다. 첫 번째 경우, this라는 단어는 childNode 변수가 현재 클래스를 구체적으로 참조한다는 것을 지정하는 반면, 이것이 없는 childNode는 LinkWithNode 메서드에서 같은 이름의 변수입니다. 두 번째 경우에는 클래스의 현재 인스턴스가 반환되고 GetPointer는 해당 인스턴스에 대한 포인터를 가져옵니다. 따라서 생성 시 이미 LineNode를 바인딩하는 것이 가능합니다.

저것들. 두 번째 경우에는 코드가 단축됩니까?
 
Barbarian2 :
저것들. 두 번째 경우에는 코드가 단축됩니까?
예, 감소에 대해 신경 쓰지 않습니다(이 경우). 당신은 그것에 집중하지 않습니다. 이것의 용도는 다양할 수 있습니다. 이것은 (this)가 사용되는 개체의 인스턴스에 대한 동의어임을 이해하는 것이 중요합니다. 아직 인스턴스가 없을 때 클래스를 설명할 때 이것은 프로그래머가 염두에 두고 있는 것을 컴파일러에게 알리는 유일한 방법입니다.
 
Barbarian2 :
저것들. 두 번째 경우에는 코드가 단축됩니까?

아니, 그게 핵심이 아니야. 이것은 이미 정의 에 있는 클래스 의 인스턴스 를 관리할 수 있도록 합니다. 이것을 알면 특정 인스턴스에 고유한 동작을 부과할 수 있습니다. 이것은 높은 수준의 유연성과 추상화를 달성합니다.

 

말하다. 저는 mql4에서 5로 이동하고 있으며 1000 또는 10k 버퍼에 대한 표시기를 작성할 것입니다. 버퍼의 이름을 변수로 설정할 기회가 있었는지 여부.

처럼

동안(a<1000)

{

에이++ B++

버퍼 이름 = 버퍼+a

buf(a)=iMA(null, B,) }

그리고 동일한 루핑으로 부표의 후속 처리

또는 mql5의 새로운 기능으로 시간과 코드를 줄이는 방법.

 
Andrei-1 :

우선 버퍼 256개 같은 제한(틀릴 수 있음)

버퍼에서는 모든 것이 정상입니다. 버퍼를 클래스에 넣고 별칭을 지정하고 별칭으로 검색할 수 있습니다.

 
감사합니다. 공부하겠습니다.
 
Andrei-1 :

tol64의 기사 어딘가에서 내가 그것을 보았고, 나는 그것을 직접 기억하지 못합니다. 봐.

더엑스퍼트 :

우선 버퍼 256개 같은 제한(틀릴 수 있음)

버퍼에서는 모든 것이 정상입니다. 버퍼를 클래스에 넣고 별칭을 지정하고 별칭으로 검색할 수 있습니다.

도움말에는 " 커스텀 인디케이터에서 사용할 수 있는 인디케이터 버퍼의 수는 제한이 없습니다. " 도움말에는 제한이 없지만 어딘가에 512개가 점멸했기 때문에 xs.
사유: