なぜ実際のクラスで演算子を使用できないのか、クラスの定義で何をしているのか理解できません。抽象クラスでのみ使用できる##演算子定義
Errdを作成する呼び出しは、抽象クラスであるため動作します。 しかし、私のErrd定義の注目されたバージョンのように、実際のクラスに演算子を持たせることはできませんか?
Errdの注目に値するバージョンには、Errd errd = eq;
を動作させるために修正できるものがありますか?
私はIDEのエラーを追加する必要がありますね。 Errdは、IDEのbecrys abstractとして定義されていません」
は、暗黙的にErrdに式を変換することはできません。明示的な変換が存在する。 あなたはキャストを逃していますか?)
しかし、式は何もありませんあなたの思いやりの応答のための鋳造用Errdのような意味がありません。
Eq eq = new Eq();
Copa copa = new Copa(eq);
Errd errd = eq;
public class Copa {
public Copa(Eq e) {
//.. do something
}
}
public class Erd : Errd { .... }
public adstract class Errd {
public static implicit operator(Eq e) {
Erd q = new Erd();
//.. do something
return q;
}
}
/*
public class Errd {
public static implicit operator(Eq e) {
Errd q = new Errd();
//.. do something
return q;
}
}
*/
感謝。
あなたは全く同じ名前( 'Errd'と' Errd')を持つ2つの型があるので、そうでない場合は、コードを更新して、上記で達成しようとしていることを実際に見るのは難しいです。少なくともコンパイルしてください。また、エラーや例外が発生した場合は、その情報を含めると役立ちます。 – Igor
Errdの2番目の定義はコメントアウトされています。 – Steve
[最小限の完全で検証可能な例](http://stackoverflow.com/help/mcve)を含めてください。 [良い質問をするにはどうすればいいですか](http://stackoverflow.com/help/how-to-ask)も読んでください。 [Overriding Operator ==](https://msdn.microsoft.com/ru-ru/library/ms173147(v = vs80).aspx)も参照し、構文が正しいことを確認してください。 – Igor