如何使=和+重载,以便“ sum = a + b”起作用

时间:2019-06-05 18:46:13

标签: c++ operator-overloading

我需要重载我班上的赋值和加法运算符,以便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 ) 预先感谢。

0 个答案:

没有答案