我需要重载我班上的赋值和加法运算符,以便sum = a + c起作用。
a = b有效,a + = b有效,a = b = c有效,但是总和每次都崩溃。我发现的唯一可能的解决方案是创建一个新类,等待添加新类,但这真的可行且最简单吗?
class v3d {
public:
double* arr;
v3d() {
arr = (double*)calloc(3, sizeof(double));
}
~v3d() {
free(arr);
}
v3d operator + (const v3d& b)
{
v3d temp1;
temp1.arr[0] = arr[0] + b.arr[0];
temp1.arr[1] = arr[1] + b.arr[1];
temp1.arr[2] = arr[2] + b.arr[2];
return temp1;
}
v3d& operator = (const v3d& b)
{
this->arr[0] = b.arr[0];
this->arr[1] = b.arr[1];
this->arr[2] = b.arr[2];
return *this;
}
};
int main()
{
v3d a, b, sum;
// set a and b to some values
sum = a + b;
// print sum
}
我希望它可以将两个向量相加,并将结果分配给sum。
VS显示这样的错误:
HEAP[vector3d.exe]: Invalid address specified to RtlValidateHeap( 003B0000, 003DE448 )
预先感谢。