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

在D1中使用Tango:

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 Yea:我正在使用带有D1的Tango,所以也许这就是为什么它不起作用的原因?我想坚持探戈。有人使用过Tango + D2吗?

最佳答案

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

https://stackoverflow.com/questions/9766279/

相关文章:

winforms - C++ CLI KeyDown::raise 错误 error C3767 候

c# - 如何修复显示 “The type or namespace name X does not

python - 我类的数组给我一个错误……AttributeError : 'set' objec

c# - 从LINQ查询返回匿名类型?

objective-c - 运行奇怪的错误运行 objective-c 代码

c# - 'System.Data.Objects.ObjectContext'不包含带有0个参数的

perl - 使用中间变量访问电子表格::Read sheets时出错

f# - 'NS.Type1'类型与f#中的 'NS.Type1

f# - 编译错误提示值不是函数

c# - 无法将类型 'IEnumerable'隐式转换为 'bool'