前の日 / 次の日 / 最新 / 2009-10

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

2009-10-30 Fri

opEquals はどう書く? [D言語]

オーバーライドするときの引数型はそのクラスではなく、Object にします。

== と != のオーバーロード

BSTR ラッパを書いていて、 opEquals の書き方に迷った。

bool opEquals(Object o){
    return this.toString == (cast(ComString)o).toString;//文字列で比較
}

o が null の場合に対応

bool opEquals(Object o){
    if(o is null){
        return false;
    }
    return this.toString == (cast(ComString)o).toString;//文字列で比較
}

o が ComString でない場合はどう書く?

alias Object.opEquals opEquals; //ComString 以外との比較の場合
bool opEquals(ComString o){
    if(o is null){
        return false;
    }
    return this.toString == o.toString;//文字列で比較
}

こうか?