【发布时间】:2013-09-18 23:24:00
【问题描述】:
我整天都在为运算符重载而摸不着头脑,我的 operator+ 函数可以正确计算数据,但我需要将 temp 类的数据传递给 operator= 以将其分配给我的类的单独实例并返回temp 不起作用(我想数据在退出时被破坏?) 整个想法是从 main x = y + z 被调用来添加来自 y 和 z 的两个向量的数据并将其分配给 x 并且我正确地得到了 y + z 的计算,但是将它传递给 x 我已经击中了砖墙有什么问题?或者有人知道吗? 这是我班上的一段代码
VecXd& operator=(const VecXd& rhs)
{
VecXd<V> temp;
temp.dimension = rhs.dimension;
cout << "operator= check dimension is..." << temp.dimension << endl;
for(int i = 0; i < rhs.dimension; i++) //Passing data to x?
{
cout << "test" << endl;
temp.vecArr[i] = rhs.vecArr[i];
cout << temp.vecArr[i] << " our new value" << endl;
}
}
friend VecXd& operator+(VecXd& lhs, VecXd& rhs){
VecXd<V> temp;
cout << lhs.dimension << "-lhs d-" << rhs.dimension << "-rhs d-" << endl; //works
if(lhs.dimension == rhs.dimension) //dimension level check
{
temp.vecArr = new V[lhs.dimension];
for(int i = 0; i < lhs.dimension; i++)
{
temp.vecArr[i] = lhs.vecArr[i] + rhs.vecArr[i];
cout << temp.vecArr[i] << " our new value" << endl;
}
//return *temp.vecArr;
return temp; //***? how to pass data?
}
else{
cout << "Dimensions do not match!!! Error!" << endl;
}
}
有什么想法吗?不要太苛刻......哈哈......:l
【问题讨论】:
-
operator+应该是operator+=。 -
我有 += 用于单独的操作,做你说的让编译器自己要求 operator+ 和 operator= :/
-
我的意思见operator overloading。
标签: c++ vector operators overloading