mql5におけるOOP、テンプレート、マクロ、微妙な使い分け - ページ 11

 
TheXpert:

比較のためのダイナミックキャスト?

この場合、実行時間は気にしません。型は他の方法でも定義できます。例えば、仮想オーバーライド関数で定義します。このコードは原理を示すためにその場で10分ほどで書いたもので、動作するバリアントではありません

 
Ilya Malev:

CBaseのポイントは何でしょうか?また、なぜ同じ型の2つの値を比較する必要があるのでしょうか?

そうです、CBaseは全く必要ありません。 IComparerはNumberを継承していますが、全く別のエンティティです。 ComparerはNumberのインターフェースではなく、二つの数値を受け取る独立したオブジェクトです。 ですから、ComparerはIComparer <T1,T2> だけでよく、 NumberとCBaseは必要ありません。
 
なるほど、また自我のある糞コテか。
 
自己中ってのは、誰かが枝に乗ってウンチを投げ始めるととても大切なウンチク。私は、テンプレートの話題で盛り上がっていた同志(あなたではありません)に、そのような実装をどう見るかを書いただけです。
 
Ilya Malev:

つまり、ComparerとComparableという概念が混同されているのです。 前者は比較対象(独立したクラス)であり、後者は比較されるオブジェクトのインターフェース(つまり、これを他のオブジェクトと比較する)です。 このオブジェクトは、この

 
Alexey Navoykov:

つまり、意味上の間違いがあります。 ComparerとComparableという概念が混同されています。 前者はComparer(独立したクラス)、後者は比較されるオブジェクトのインタフェース(つまり、これを別のオブジェクトと比較する)です。

マイナンバーはただのComparable型、インターフェースはComparer型で、Sharpでもなぜか巧みに連携している。この場合、互いに作用し合うことになります。言っておくが、そこの構造をそっくりそのままコピーすることが目的ではなかったのだ。ここでの目的は、比較されるクラスの1つから必然的に継承されるテンプレートベースのインタフェースを作る方法を示すことである。その仕組みは、私も一緒に見ていて、いいなと思いました。

 
Alexey Navoykov:
全く別の存在なのに、なぜかNumberからIComparerが受け継がれているんですね。

ここでは、ベースクラスのオブジェクトのタイプ別に、まあ、非常に大雑把に、100行で動くアーキテクチャを提示することを目標にしたわけではありません。しかし、いずれにせよすべては一つの共通の祖先から受け継ぐことになる

 
Ilya Malev:

ここでは、互いを通して仕事をする。

しかし、それはできません。 異なるエンティティを互いに継承することはできません。 NumberはIComparableインターフェイスを継承し、別のメソッドでその型に対応するIComparerを返すことができるのです。
 
Alexey Navoykov:
NumberはIComparableインターフェイスを継承し、別のメソッドでその型に対応するIComparerを返すことができる。

Numberは実際には数字ではなく、気がつけば値フィールドすら持っていない。そう呼んだだけなのだが...。でも、私の例がまったく合わないのであれば、気にしないでください。

 
Ilya Malev:

Numberは実際には数字ではなく、気がつけば値フィールドすら持っていない。そう呼んだだけなのだが...。OK、もし私がうまくいくようなことを思いついたら、議論することを提案します。でも、その間に、もし私の例がまったくうまくいかなかったら、あなたの頭の中からそれを取り除いてください

しかし、抽象的なメソッドについて考える必要があります。 抽象的なメソッドがないと、非常に信頼性が低くなります。
理由: