我有一个包含x,y和z的自定义Vector类。它们存储在名为data
的int数组中。所以基本上是data[0] = x
,data[1] = y
和data[2] = z
。很简单。
我的任务是编写一个允许以下内容的函数:
vector[0] = 2.0f;
哪个应该使向量的x值为2.0
。我已经重载了[]运算符,以便它返回一个浮点数(它本质上是一个getter方法 - 例如:
cout << vector[0];
会打印矢量的x值。)
我对如何将浮动分配给x
,y
或z
感到困惑。我想我需要重载一个运算符(也许是=),但我不确定。我是否正确地思考这个问题?
答案 0 :(得分: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];
};