C ++:为矩阵模板重载+ =运算符

时间:2011-09-07 21:50:43

标签: c++ matrix operators

我一直在实现自定义模板矩阵类,我有一个需要帮助的函数。我正在尝试重载运算符+ =我使用我已经实现并正在工作的重载运算符[]。问题是,我不知道如何将'this'指针与operator []结合使用。

这是我正在尝试做的事情:

Matrix & operator+= (const Matrix & rhs)
{
    if(this->numrows() != rhs.numrows() || this->numcols() != rhs.numrows())
    {
        cout << "ERR0R: Cannot add matrices of different dimensions." << endl;
        return *this;
    }
    else
    {
        theType temp1, temp2, temp3;
        for(int i = 0; i < this->numrows(); i++)
        {
            for(int j = 0; j < this->numcols(); j++)
            {
                temp1 = this->[i][j];
                temp2 = rhs[i][j];
                temp3 = temp1 + temp2;
                this->[i][j] = temp3;
            }
        }
        return *this;
     }
}

无论我的错误/业余/冗余编码如何:P我的主要关注点是如何使用'this'指针,就像我称之为“rhs [i] [j]”一样。 (因为这个 - > [i] [j]或者这个。[i] [j]都没有工作)

我在想它也许会有很长的路要走&lt;&lt;例如:this-&gt; operator [](i)&gt;&gt;但我无法弄清楚如何将双括号纳入其中。或者也许完全有另一种选择。我希望我能很好地解释自己。我觉得答案很简单。我只是难过。任何帮助表示赞赏。

感谢。

2 个答案:

答案 0 :(得分:6)

你可以写

(*this)[i][j]

或者,如果你想对它非常歪曲

this->operator[](i)[j];

或更糟:

this->operator[](i).operator[](j); // :) happy debugging

不要使用irregardless这个词。 Stewie Griffin said everyone who uses that term along with "all of the sudden" must be sent to a work camp:)

答案 1 :(得分:2)

  

我觉得答案非常简单

是的,是:)

(*this)[i][j]