我正在编写一个数学库作为实践练习。我在重载 = 运算符时遇到了一些问题。当我调试它时,我注意到对 vertex1 = vertex2 的调用改为调用复制构造函数。
在头文件中我有:
//constructors
vector3();
vector3( vector3 &v );
vector3(float ix, float iy, float iz);
//operator overloading
vector3 operator =(vector3 p);
....
在我实现的源文件中:
vector3 vector3::operator =(vector3 p)
{
vector3 v3;
v3.x = p.x;
v3.y = p.y;
v3.z = p.z;
return v3;
}
后来我有一个叉积方法,我想像这样使用它:
vector3 v3;
v3 = v1.crossProduct(v2);
错误消息是:error: no matching function for call to `vector3::vector3(vector3)' 但我不想调用复制构造函数。