当我尝试在一个简单的 Vector 结构上重载 opBinary 时,我得到一个奇怪且毫无意义的错误:
struct Vector(T)
{
T x, y;
Vector opBinary(string op)(Vector!float vector)
{
return Vector (
mixin("x" ~ op ~ "vector.x"),
mixin("y" ~ op ~ "vector.y")
);
}
Vector opBinary(string op)(Vector!double vector)
{
return Vector (
mixin("x" ~ op ~ "vector.x"),
mixin("y" ~ op ~ "vector.y")
);
}
}
void main()
{
auto dVec = Vector!double();
auto fVec = Vector!float();
auto aVec = dVec + fVec; // Adding this line causes error (see below)
}
我得到的错误很简单:“opBinary(string op)”。没有行号,什么都没有。这显然并没有给我太多的继续。有没有另一种方法来处理这种情况?这是一个已知的错误?
我在 Windows 7 上使用 DMD 2.057。尚未在 Linux 上进行测试。
[编辑] 清理代码以提高可读性。