2012-03-19 5 views
0

基本演算子Dでオーバーロード(その2)D1とタンゴを使用

class C 
{ 
    private int j; 
    public int opBinary(char[] op: "+") (ref C x) { return 1; } 
    public int opBinary(char[] op: "+") (C x) { return 3; } 
} 

int opBinary(char[] op: "+") (ref C x, ref C y) { return 2; } 
int opBinary(char[] op: "+") (C x, C y) { return 2; } 

void main() { 
    C a = new C; 
    C b = new C; 

    int j = a + b; 
} 

コンパイラエラー:

"incompatible types"

オーバーロードされた演算子の意味が一致しませんでした。

おかげで多くのD.のこつを得るために待つことができません。

OHいいえ:私はD1とタンゴを使用しています。そのため、おそらく動作していないのでしょうか?私はタンゴにこだわりたい。誰もTango + D2を使いましたか?

+1

誰かがD + +を作成する必要がありますので、Googleは適切な検索結果を思い付きます。 –

+1

便利なリンクがいくつかあります:http://dlang.org/operatoroverloading.html#Binaryとhttps://github.com/SiegeLord/Tango-D2 – Raxillan

+3

「Dプログラミング」については、Googleにお勧めします。 – FeepingCreature

答えて

3

opBinaryなどを使用したD1テンプレート演算子のオーバーロードでは機能しません。あなたは使用する必要がありますopAdd, opSub, etc.

関連する問題