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

 
TheXpert :

비교를 위한 다이나믹 캐스트?? 당신 미쳤어?

이 경우 런타임은 신경 쓰지 않습니다. 예를 들어 가상 재정의 함수와 같은 다른 방식으로 유형을 정의할 수 있습니다. 코드는 원칙을 보여주기 위해 10분 만에 무릎에 작성되었으며 작동 옵션이 아닙니다.

 
Ilya Malev :

이 CBase의 요점은 무엇입니까? 그리고 같은 유형의 정확히 2개의 값을 비교해야 하는 이유는 무엇입니까?

예, CBase는 여기에 전혀 필요하지 않습니다. 완전히 다른 엔터티이지만 어떤 이유로 인해 Number에서 상속된 IComparer가 있습니다. Comparer는 Number에 대한 인터페이스가 아니라 두 개의 숫자를 허용하는 독립 실행형 객체입니다. 따라서 비교자는 IComparer<T1,T2>여야 하며 Number 및 CBase가 없어야 합니다.
 
분명히, 자만심을 가진 또 다른 govnokoder.
 
자만은 누군가가 나뭇 가지에 올라 똥을 던지기 시작할 때입니다. 아주 중요한 똥. 방금 템플릿 주제에 대해 논의한 친구(당신이 아님)에게 편지를 썼습니다.
 
Ilya Malev :

저것들. 의미 오류가 있습니다. Comparer와 Comparable의 개념은 함께 혼합되어 있습니다. 첫 번째는 비교 자(자체 포함 클래스)입니다. 그리고 두 번째 것은 비교되는 객체에 대한 인터페이스입니다(즉, 이것을 다른 객체와 비교). 여기서 객체는 상속할 수 있습니다.

 
Alexey Navoykov :

저것들. 의미 오류가 있습니다. Comparer와 Comparable의 개념은 함께 혼합되어 있습니다. 첫 번째는 비교 자(자체 포함 클래스)입니다. 그리고 두 번째 것은 비교되는 객체에 대한 인터페이스입니다(즉, 이것을 다른 객체와 비교).

나는 단지 Number of Comparable 유형과 Comparer 유형의 인터페이스를 가지고 있으며 그것들은 또한 샤프에서 어떻게든 교활하게 거기에 연결되어 있습니다. 여기에서 그들은 서로를 통해 일합니다. 거기에 있는 디자인을 정확히 카피하려는 목표는 없었다고 합니다. 여기에서 목표는 비교 클래스 중 하나에서 반드시 상속되는 템플릿 기반 인터페이스를 만드는 방법을 보여주는 것입니다. 내가 당신에게서 보고 좋아했던 것은 바로 이 메커니즘이었습니다.

 
Alexey Navoykov :
완전히 다른 엔터티이지만 어떤 이유로 인해 Number에서 상속된 IComparer가 있습니다.

여기에 기본 클래스 개체의 유형별로 Number가 있습니다. 글쎄요, 대략적으로 100줄에 대한 작업 아키텍처를 제시하지 않았습니다. 그러나 거기에는 모든 것이 하나의 공통 조상으로부터 상속될 것입니다.

 
Ilya Malev :

여기에서 그들은 서로를 통해 일합니다.

하지만 그렇게 하지 않습니다. 서로 다른 엔터티를 상속할 수 없습니다. Number는 IComparable 인터페이스를 상속할 수 있으며 별도의 메서드에서 해당 형식에 대한 IComparer를 반환할 수도 있습니다.
 
Alexey Navoykov :
하지만 그렇게 하지 않습니다. 서로 다른 엔터티를 상속할 수 없습니다. Number는 IComparable 인터페이스를 상속할 수 있으며 별도의 메서드에서 해당 형식에 대한 IComparer를 반환할 수도 있습니다.

숫자는 실제로 숫자가 아니며 눈치채면 값 필드도 없습니다. 그냥 그렇게 불렀습니다 ... 글쎄, 내가 뭔가가 작동하면 토론을 제안 할 것이지만 지금은 내 예가 전혀 맞지 않으면 신경 쓰지 마십시오.

 
Ilya Malev :

숫자는 실제로 숫자가 아니며 눈치채면 값 필드도 없습니다. 그냥 그렇게 불렀습니다 ... 글쎄, 내가 뭔가가 작동하면 토론을 제안 할 것이지만 지금은 내 예가 전혀 맞지 않으면 신경 쓰지 마십시오.

확인. 그러나 여전히 추상적인 방법에 대해 생각하고 있습니다. 그것들이 없으면 모든 것이 매우 불안정해 보입니다.