C ++: перегрузка оператора + = для шаблона матрицы - PullRequest
3 голосов
/ 08 сентября 2011

Я реализовал пользовательский класс матрицы шаблонов, и у меня есть функция, с которой мне нужна помощь. Я пытаюсь перегрузить оператор + =, для которого я использую перегруженный оператор [], который я уже реализовал и работает. Проблема в том, что я не знаю, как включить указатель this в оператор [].

Вот что я пытаюсь сделать:

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]». (Поскольку ни this -> [i] [j], ни this. [I] [j] не работают)

Я думал, что, может быть, это сработает долго << например: this-> operator [] (i) >>, но я не могу понять, как включить в это двойные скобки. Или, может быть, есть другая альтернатива полностью. Надеюсь, я все хорошо объяснил. У меня есть ощущение, что ответ действительно прост. Я просто в тупик. Любая помощь приветствуется.

СПАСИБО.

Ответы [ 2 ]

6 голосов
/ 08 сентября 2011

Вы можете написать

(*this)[i][j]

или, если хотите сильно извращаться, об этом

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

или хуже:

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

И нене использовать слово безотносительно. Стьюи Гриффин сказал, что всех, кто использует этот термин вместе со словом "внезапно", нужно отправить в рабочий лагерь :)

2 голосов
/ 08 сентября 2011

У меня такое чувство, что ответ очень прост

Да, это так:)

(*this)[i][j]

...