所以我有这个错误阻止我继续我的任务 这是代码:
#include "std_lib_facilities.h"
class Vector3
{
public:
Vector3();
Vector3(double x1);
Vector3(double x1, double y1);
Vector3(double x1, double y1, double z1);
//Helper functions
double x() {return x1;}
double y() {return y1;}
double z() {return z1;}
private:
double x1,y1,z1;
};
/** Constructor Definitions **/
Vector3::Vector3(double x, double y, double z){
x1=x;
y1=y;
z1=z;
}
Vector3::Vector3(double x, double y){
x1=x;
y1=y;
}
Vector3::Vector3(double x){
x1=x;
}
Vector3::Vector3()
{
x1=0;
y1=0;
z1=0;
}
/** Operator Overloading **/
ostream& operator<<(ostream&os, Vector3& v) //<< Overloading
{
return os <<"["<<v.x()
<<", "<<v.y()
<<", "<<v.z()
<<"]"<<endl;
}
Vector3 operator+(Vector3 v1, Vector3 v2) //+ Overloading
{
double a,b,c;
Vector3 vector1(a,b,c);
return vector1( v1.x()+v2.x() , v1.y()+v2.y() , v1.z()+v2.z() );
}
这是一个头文件。错误发生在返回行的// +重载(代码的最后一位) 我用Google搜索但没有用。大多数人都建议我使用一个与其他名称相同的函数或变量,但我找不到类似的东西。
答案 0 :(得分:2)
Vector3 vector1(a,b,c);
return vector1( v1.x()+v2.x() , v1.y()+v2.y() , v1.z()+v2.z() );
首先,您使用未初始化的变量构建Vector3
对象。然后,您尝试在该对象上调用调用操作符(operator()
)。您的operator+
函数应该看起来像这样:
Vector3 operator+(Vector3 v1, Vector3 v2) //+ Overloading
{
return Vector3( v1.x()+v2.x() , v1.y()+v2.y() , v1.z()+v2.z() );
}
答案 1 :(得分:2)
你的问题就在这一行:
return vector1( v1.x()+v2.x() , v1.y()+v2.y() , v1.z()+v2.z() );
您认为表达方式会怎样?看起来您将vector1
变量视为函数名称。这是你的意思吗?
如果您尝试构建Vector3
类型的新对象,那么您可能需要在某个时候使用类型名Vector3
。