2012-07-20 3 views
4

저는 요소가 점인 클래스 그리드를 작성하고 있습니다. 각 요소의 사각형에 (이중) 점이있는 (int) 그리드입니다. 저는 이미 이것을 정의했습니다 (높이 값은 다른 곳에 저장됩니다) :[] = 연산자 정의하기

Point &operator[](Point p) { return floor(get_x(p)) + height * floor(get_y(p)); } 

그리고 할당 연산자를 정의하고 싶습니다. 어떻게 이런 일이 벌어 질까요? [] 연산자를 기반으로 자동 정의됩니까?

은 지금까지 나는

Point &operator[]=(Point p, Point q) { data[floor(get_y(p)) * height + floor(get_x(p))] = q; } 

가지고 있지만 그 원형 정의처럼 보인다. 작동 방법은 [] 오퍼레이터가 인덱스에 대한 참조를 요소를 반환해야하지있어

+0

'연산자 []'확실히 복귀 안된다 그리드에 대한 참조! 그리고 당신의 정의에서는 그렇지 않습니다 만, 선언 된 반환 유형이'Grid &'일 때 첫 번째 오류가 발생할 것입니다. – leftaroundabout

답변

7

소자 (유형)를 지원한다고 operator= (즉 Point::operator=)

+0

아, 고마워. 나는 전에 그것을 보았어 야했다. 그래서 포인터를 사용합니다. – jclancy

+0

@jclancy 포인터를 사용하는지 여부는 구현 세부 사항입니다. – juanchopanza