私は怠惰なオブジェクト作曲家に取り組んでいます
class Bitset
{
private List<bool> _data;
public Bitset(List<bool> vector)
{
_data = vector;
}
public virtual bool GetElement (int i)
{
return _data[i];
}
public Bitset(){}
}
class BitsetComposer:Bitset
{
readonly private Bitset _a,_b;
private Func<bool,bool,bool> _composer;
public BitsetComposer(Bitset a,Bitset b, Func<bool,bool,bool> composer)
{
this._a=a;
this._b=b;
this._composer=composer;
}
public override bool GetElement (int i)
{
return _composer(_a.GetElement(i),_b.GetElement(i));
}
public static BitsetComposer operator & (BitsetComposer a, BitsetComposer b)
{
return new BitsetComposer(a,b,BitsetComposer.And);
}
public static bool And(bool a,bool b){return a&b;}
}
これは問題ありません。なぜなら、&も基本クラスを取ることができることが望ましいからです。
//replaced with
//public static BitsetComposer operator & (BitsetComposer a, BitsetComposer b)
public static BitsetComposer operator & (Bitset a, Bitset b)
{
return new BitsetComposer(a,b,BitsetComposer.And);
}
しかし、エラーが発生しました:
エラーCS0563:二項演算子のパラメーターの1つは、包含型でなければなりません