2012-07-20 86 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 2012-07-20 08:02:52

回答

7

這不是它是如何工作的,在[]經營者應在該索引處返回元素基準,而元素(類型)應支持operator=(即Point::operator=

+0

啊,謝謝。我以前應該看到過。所以它非常使用一個指針。 – jclancy 2012-07-20 08:12:47

+0

@jclancy它是否使用指針是一個實現細節。 – juanchopanza 2012-07-20 08:28:52