我想,这是一个非常基本的问题,但我找不到答案。
程序是出于学习目的,我用这样的乘法运算符定义了一个向量类:
public class vector
{
private int x;
private int y;
public vector(int x,int y)
{
this.x = x;
this.y = y;
}
public static vector operator *(vector w1, vector w2)
{
return int w1.x*w2.x + w1.y * w2.y;
}
}
问题在于,visual studio强调了表达式,我应该如何修改“*”运算符的定义以使其有效?
答案 0 :(得分:1)
您定义了函数以返回vector
,但您只返回int
。
public static vector operator *(vector w1, vector w2)
{
return int w1.x*w2.x + w1.y * w2.y;
}
应该是
public static int operator *(vector w1, vector w2)
{
return int (w1.x*w2.x + w1.y * w2.y);
}
或者例如,如果您想为加法运算符返回一个向量,它将如下所示:
public static vector operator +(vector w1, vector w2)
{
return new vector (w1.x+w2.x, w1.y + w2.y);
}
答案 1 :(得分:0)
您需要返回 vector 的新实例,试试这个:
public class vector
{
private int x;
private int y;
public vector(int x, int y)
{
this.x = x;
this.y = y;
}
public static vector operator *(vector w1, vector w2)
{
return new vector(w1.x* w2.x, w1.y * w2.y);
}
}