我有一個問題與下面的代碼:無法應用操作/於操作數的結構和雙
public Vector3 Normalized
{ get { return this/this.Length; } }
我得到一個錯誤:
"Operator '/' cannot be applied to operands of type Vector3 and double"
爲什麼會出現這個錯誤?
這裏的整個結構以供參考:
struct Vector3
{
public double x;
public double y;
public double z;
public Vector3(double x, double y, double z)
: this()
{
this.x = x;
this.y = y;
this.z = z;
}
public double X
{ get { return x; } set { x = value; } }
public double Y
{ get { return y; } set { y = value; } }
public double Z
{ get { return z; } set { z = value; } }
public static Vector3 operator +(Vector3 vecA, Vector3 vecB)
{
return new Vector3(vecA.X + vecB.X, vecA.Y + vecB.Y, vecA.Z + vecB.Z);
}
public static Vector3 operator -(Vector3 vecA, Vector3 vecB)
{
return new Vector3(vecA.X - vecB.X, vecA.Y - vecB.Y, vecA.Z - vecB.Z);
}
public static Vector3 operator *(Vector3 vecA, Vector3 vecB)
{
return new Vector3(vecA.X * vecB.X, vecA.Y * vecB.Y, vecA.Z * vecB.Z);
}
public static Vector3 operator /(Vector3 vecA, Vector3 vecB)
{
return new Vector3(vecA.X/vecB.X, vecA.Y/vecB.Y, vecA.Z/vecB.Z);
}
public double Dot(Vector3 vec)
{
return (this.X * vec.X + this.Y * vec.Y + this.Z * vec.Z);
}
public static Vector3 Cross(Vector3 vecA, Vector3 vecB)
{
return new Vector3(vecA.Y * vecB.Z - vecA.Z * vecB.Y,
vecA.Z * vecB.X - vecA.X * vecB.Z,
vecA.X * vecB.Y - vecA.Y * vecB.X);
}
public double Length
{ get { return Math.Sqrt(X * X + Y * Y + Z * Z); } }
public double LengthSq
{ get { return X * X + Y * Y + Z * Z; } }
public Vector3 Normalized
{ get { return this/this.Length; } }
}
遠遠看你超載了'/'運營商 - 看它的操作數... –
好吧,想急於寫10班會給窮人思維,謝謝。 – Januszoff
編譯器錯誤應該給你一個線索:)每當編譯器說「我不能這樣做!」檢查你是否真的有代碼去做你想做的事...... –