【发布时间】:2012-11-12 17:17:44
【问题描述】:
我是重载运算符的新手,我进行了一些搜索并找到了this helpful article,我像作者一样编写了自己的代码,但我收到了vector vector::operator*(float, vector) must take either zero or one argument 错误。
这是我的代码:
class vector
{
public:
float x;
float y;
vector(float, float);
float operator$ (vector, vector);
vector operator* (float, vector);
vector operator* (vector, float);
};
vector::vector(float _x = 0, float _y = 0)
{
x = _x;
y = _y;
}
const float vector::operator$ (const vector &v1, const vector &v2)
{
return (v1.x * v2.x) + (v1.y * v2.y);
}
const vector vector::operator* (const float &m, const vector &v)
{
vector ret_val = v;
ret_val.x *= m;
ret_val.y *= m;
return ret_val;
}
const vector vector::operator* (const vector &v, const float &m)
{
return m * vector;
}
我的操作系统是 kubuntu 12.04,我的 IDE 是 dev-C++,使用 wine windows 程序加载器在 linux 上运行。
【问题讨论】:
-
我第一次看到有人超载
$..... -
我试图找到一个好的运算符来表示向量中的点积,但我没有想到任何好的;我们可以像我一样定义一个新的运算符吗?