2010-01-18 8 views
1

나는 'this'와 함께 연산자를 어떻게 사용할 수 있는지 궁금합니다. 예를 들면 :C++ 'this'와 연산자 오버로드

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; 
} 

고마워요!

답변

8

다음 중 하나를 나는 종종 이런 일을 할 것입니다 this->operator()(i,j) 또는 (*this)(i,j)

5

그냥 할

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

오, 참조 해제 ... 솔루션은 항상 예상보다 쉽습니다 :) Thx! – huff

1

:

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

그것은 바로 위의 예제와 동일하지만, 그것 뿐이다 추가 포인터 표기법을 없애고 코드를 더 깨끗하게 만들 수 있습니다.