OOP, Vorlagen und Makros in mql5, Feinheiten und Anwendungen - Seite 11

 
TheXpert:

dynamische Besetzung zum Vergleich? Sind Sie verrückt?

Die Ausführungszeit ist mir in diesem Fall egal, der Typ kann auch auf andere Weise definiert werden, z. B. durch eine virtuelle Überschreibungsfunktion. Der Code wurde auf der Stelle in 10 Minuten geschrieben, um das Prinzip zu zeigen und ist keine funktionierende Variante

 
Ilya Malev:

Was ist der Sinn von CBase? Und warum sollten 2 Werte desselben Typs verglichen werden?

Ja, Sie brauchen CBase hier überhaupt nicht. Sie haben IComparer aus irgendeinem Grund von Number geerbt, obwohl es sich um völlig unterschiedliche Entitäten handelt. Comparer ist keine Schnittstelle für Number, es ist ein unabhängiges Objekt, das zwei Zahlen akzeptiert. Ihr Comparer sollte also einfach IComparer<T1,T2> sein und ohne Number und CBase
 
Richtig, noch ein Shitcoder mit einem Ego.
 
Selbstherrlichkeit ist nur dann gegeben, wenn jemand auf einen Ast steigt und anfängt, mit Kacke zu werfen. Sehr wichtige Kacke. Ich habe lediglich dem Genossen (nicht Ihnen), mit dem wir über das Thema der Vorlagen diskutiert haben, geschrieben, wie ich mir eine solche Umsetzung vorstelle.
 
Ilya Malev:

Sie haben also einen semantischen Fehler: Die Begriffe Comparer und Comparable sind durcheinander geraten. Der erste ist ein Comparer (eine unabhängige Klasse), während der zweite eine Schnittstelle für das zu vergleichende Objekt ist (d.h. er vergleicht dieses mit einem anderen Objekt). Dieses Objekt kann dieses

 
Alexey Navoykov:

Sie haben also einen semantischen Fehler. Die Begriffe Comparer und Comparable werden verwechselt. Der erste ist ein Comparer (eine unabhängige Klasse) und der zweite ist eine Schnittstelle zu dem zu vergleichenden Objekt (d.h. er vergleicht dieses mit einem anderen Objekt).

Meine Number ist einfach der Comparable-Typ, und die Schnittstelle ist der Comparer-Typ, und sie sind auch in Sharp irgendwie clever verknüpft. In diesem Fall wirken sie sich gegenseitig aus. Ich sage Ihnen, es war nicht mein Ziel, genau diese Struktur dort zu kopieren. Hier soll gezeigt werden, wie man eine vorlagenbasierte Schnittstelle erstellen kann, die notwendigerweise von einer der zu vergleichenden Klassen geerbt wird. Das ist der Mechanismus, den ich bei Ihnen gesehen habe, und er hat mir gefallen.

 
Alexey Navoykov:
Sie haben IComparer aus irgendeinem Grund von Number geerbt, obwohl es sich um völlig unterschiedliche Entitäten handelt.

Ich habe hier nach dem Typ des Objekts der Basisklasse nummeriert, nun ja, sehr grob, ich habe mir nicht das Ziel gesetzt, eine funktionierende Architektur auf 100 Zeilen zu präsentieren. Aber alles wird trotzdem von einem gemeinsamen Vorfahren abstammen

 
Ilya Malev:

Hier arbeiten sie sich gegenseitig ab.

Aber das tut es nicht. Man kann nicht verschiedene Entitäten voneinander erben. Number kann die Schnittstelle IComparable erben, und es kann auch IComparer für seinen Typ in einer separaten Methode zurückgeben.
 
Alexey Navoykov:
Number kann die Schnittstelle IComparable erben und über eine eigene Methode auch IComparer für seinen Typ zurückgeben.

Number ist nicht wirklich eine Zahl, sie hat nicht einmal ein Wertfeld, wie Sie feststellen können. Ich habe es einfach so genannt... Ok, wenn etwas für mich funktioniert, dann biete ich an, es zu diskutieren, aber in der Zwischenzeit, wenn mein Beispiel überhaupt nicht passt, vergessen Sie es einfach.

 
Ilya Malev:

Number ist nicht wirklich eine Zahl, sie hat nicht einmal ein Wertfeld, wie Sie feststellen können. Ich habe es einfach so genannt... OK, wenn ich mit einer praktikablen Lösung aufwarten kann, biete ich an, sie zu diskutieren, aber in der Zwischenzeit, wenn mein Beispiel überhaupt nicht funktioniert, lassen Sie es einfach aus Ihrem Kopf

OK. Aber Sie sollten über abstrakte Methoden nachdenken. Ohne sie sieht es sehr unzuverlässig aus.
Grund der Beschwerde: