运算符重载不起作用

时间:2015-12-15 23:35:35

标签: c++

我正在制作一个matrix3x3类,虽然我有其所需的功能但是运算符重载*=+=-=/=并且#39;工作。这就是我所拥有的:

mat3 operator*(const mat3 &m); // Declared within mat3 class

mat3 mat3::operator *=(const mat3& m) // How it's implemented
{
    *this = *this * m;
    return *this;
}

我只想说,它有点有用;但这是我想要的用法:

mat3 m; // Initialise to identity matrix

m *= mat3(2.0); // Multiply matrix by scalar and apply

问题在于它根本不会影响矩阵! m仍然保持不变,即使我刚刚对其进行了*= mat3(2.0)操作。但是,这有效:

m = m *= mat3(2.0);

这很愚蠢,因为我不妨这样做:

m = m * mat3(2.0);

重点是所有上述乘法必须返回相同的结果。这里没有近似值也没有妥协。坦率地说,所有与*=+=等有关的运营商都不起作用。如何让这种运算符重载工作,以便将矩阵相乘并应用该乘法可以像以下一样简单:

m *= mat3(2.0)

0 个答案:

没有答案