2011-09-07 28 views
3

私はカスタムテンプレート行列クラスを実装していますが、私はいくつかの助けが必要な関数を持っています。私はすでに実装して働いているオーバーロードされた演算子[]を使って+ =演算子をオーバーロードしようとしています。問題は、私は演算子[]に 'this'ポインタを組み込む方法がわかりません。C++:行列テンプレートの+ =演算子のオーバーロード

ここで私がやろうとしているものです:

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私の主な関心事は、私は私が呼ぶ「この」ポインタと同じ方法を使用する方法であります"rhs [i] [j]。"

私は多分それが長い道のりで動作すると思っていた< <例:this-> operator [](i(i)[j] )>>しかし、二重括弧をどのように組み込むのか分かりません。あるいは、別の選択肢が完全にあるかもしれません。私は自分自身をうまく説明したかったと思う答えが本当にシンプルだと感じています。私はちょうど困惑しています。どんな助けもありがとうございます。

THANKS。

+0

[こちらをご覧ください](http://www.parashift.com/c++-faq-lite/operator-overloading.html#faq-13.10) – Naszta

答えて

2

は私が持っている答えを感じ

は、はい、それはあなたがしたい場合は、

(*this)[i][j] 

を書いたりすることができます:)

(*this)[i][j]

関連する問題