D中的基本运算符重载(第2部分)

时间:2012-03-19 07:11:27

标签: syntax compiler-errors operator-overloading d

将Tango与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;
}

编译错误:

  

“不兼容的类型”

意味着重载的运算符不匹配。

迫不及待想要掌握D。

非常感谢。

OH Yea:我正在使用带有D1的Tango,所以也许这就是为什么它不起作用?我想坚持Tango。有人用过Tango + D2吗?

1 个答案:

答案 0 :(得分:3)

在使用opBinary等的D1模板化运算符重载中不起作用。您需要使用opAdd, opSub, etc.