2012-01-24 59 views
1

我有一個包含一個x,y,和z的自定義Vector類。這些存儲在一個名爲data的int數組中。所以基本上data[0] = x,data[1] = ydata[2] = z。夠簡單。C++指定浮子構件數據

我負責寫一個功能,允許執行以下操作:

vector[0] = 2.0f; 

這將使向量的x值是2.0。我已經超負荷[]操作,以便它返回一個浮點數(它本質上是一個getter方法 - 例如:

cout << vector[0]; 

將打印任何向量的x值。)

我很困惑至於如何我可以分配浮動到x,yz。我想我需要重載一個操作符(也許是=),但我不確定。我在想這個方法嗎?

+2

你會做什麼/應該發生'vector [0] = 2.5f;'後面跟着'cout << vector [0];'? – Johnsyweb

+0

它應該打印2.5。 – FlapsFail

+0

然後將底層數據存儲在一個'int'數組中不會對您有太大的幫助! – Johnsyweb

回答

3

要做到這一點,您需要提供operator[]版本,該版本返回您想要分配給成員的引用。例如:

class vector { 
public: 
    float& operator[](int pos) { 
     return data[pos]; 
    } 
    //You should also provide a const qualified overload 
    //so that operator[] can be called on a const vector 
    float operator[](int pos) const { 
     return data[pos]; 
    } 
private: 
    float data[3]; 
}; 
+0

我很欣賞這個回覆!我已經寫了這個函數並且它可以工作。我想我的問題是我應該如何重載'operator ='來讓它適應這個? – FlapsFail

+0

不需要重載'operator =',因爲函數返回一個對float的引用。浮點數是建立在已經爲它們定義了'operator ='的類型上的。 – Mankarse

+0

啊你是對的。現在就開始工作了。感謝一堆:) – FlapsFail