D opBinary()() 重载错误?
当我尝试在简单的 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 上进行测试。
[编辑]对代码进行了一些清理以提高可读性。
When I try and overload opBinary on a simple Vector struct, I get a strange and meaningless error:
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)
}
The error I get is simply: "opBinary(string op)". No line numbers, nothing. Which obviously doesn't give me a whole lot to go on. Is there another way to handle this situation? Is this a known bug?
I'm using DMD 2.057 on Windows 7. Haven't tested on Linux yet.
[EDIT] cleaned the code up a bit for readability.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
完整的错误是:
VisualD 无法解析它,导致您看到的错误。你用的是VisualD吗?
如果将代码更改为类似以下内容,则该代码可以工作:
The full error is:
VisualD fails to parse it, causing the error you see. Are you using VisualD?
The code works if you change it to something like: