dmd2语言以下代码报错提示:opAssign methods are not used for initialization but for subsequent assignments请给我纠正下代码如下:import stdstdio;struct Vector3 float x y z; 定义加法运算符重载 Vector3 opBinarystring opVector
在dmd2语言中,重载赋值运算符应该是用于对象之间的赋值操作,而不是用于对象初始化。因此,将重载赋值运算符改为构造函数即可:
import std.stdio; struct Vector3 { float x, y, z;
// 定义加法运算符重载
Vector3 opBinary(string op)(Vector3 v) if (op == "+")
{
return Vector3(x + v.x, y + v.y, z + v.z);
}
// 定义减法运算符重载
Vector3 opBinary(string op)(Vector3 v) if (op == "-")
{
return Vector3(x - v.x, y - v.y, z - v.z);
}
// 构造函数
this(float otherFloat)
{
x = otherFloat;
y = otherFloat+1000;
z = otherFloat+2000;
}
}
void main() { Vector3 v1 = Vector3(1, 2, 3); Vector3 v2 = Vector3(4, 5, 6);
Vector3 v3 = v1 + v2; // 调用加法运算符重载
Vector3 v4 = v2 - v1; // 调用减法运算符重载
Vector3 v5 = Vector3(88.8F); // 调用构造函数
writeln(v3,v4,v5);
原文地址: http://www.cveoy.top/t/topic/e1oF 著作权归作者所有。请勿转载和采集!