2010-01-18 5 views
1

Je me demandais comment utiliser les opérateurs avec 'this'. Pour mettre un exemple:C++ 'this' et surcharge de l'opérateur

class grd : clm 
{ 
    inline int &operator()(int x, int y) { return g[x][y]; } 
    /* blah blah blah */ 
}; 

grd grd::crop(int cx1, int cy1, int cx2, int cy2) 
{ 
    grd ngrd(abs(cx1-cx2), abs(cy1-cy2)); 
    int i, j; 
    // 
    for (i = cx1; i < cx2; i++) 
    { 
     for (j = cy1; j < cy2; j++) 
     { 
      if (i >= 0 && i < x && j >= 0 && j < y) 
       ngrd(i-cx1,j-cy2) = ?? // this->(i,j); **** 
     } 
    } 
    return ngrd; 
} 

Merci!

Répondre

8

Soit: this->operator()(i,j) ou (*this)(i,j)

5

Il suffit de faire

(*this)(i,j); 
+0

Oh, dereference ... la solution est toujours plus facile que prévu :) Thx! – huff

1

Je vais aussi souvent faire des choses comme ceci:

grd& This(*this); 
This(i,j); 

Il est tout de même que les exemples ci-dessus, mais il se débarrasse de la notation de pointeur supplémentaire et peut rendre le code plus propre.