C++ 数组重载运算符 []
Posted
技术标签:
【中文标题】C++ 数组重载运算符 []【英文标题】:C++ array overloading operator [] 【发布时间】:2014-11-19 16:16:34 【问题描述】:class myClass
public:
int y[2];
myClass()
y[0] = 0;
y[1] = 0;
void operator[](int x)
//
;
int main()
myClass myobj();
//myobj.y[0] = 1;
return 0;
上面的类 myClass 有一个公共成员,一个由两个元素组成的整数数组。现在,我需要重载 operator[] 而不是在 main myobj.y[0] = 1;
中编写,以便通过编写 y[0] = 1;
来执行相同的操作,将数组的元素设置为等于某个值,例如此处为 1
。我已经为此苦苦挣扎了一个多小时,起初我不知道要声明什么 operator[],也许是无效的?其次,无论如何,我可以将数组的位置传递给参数 x 但我不知道如何传递值,我是否也应该重载 operator = ?
【问题讨论】:
你在正确的轨道上。这是一个教程:tutorialspoint.com/cplusplus/… @RSahu +1,比我的回答好;你已经教会了 OP 如何钓鱼。 @Bathsheba,SO 只是网络上寻找此类问题答案的众多资源之一。希望人们尽可能多地利用它们。 非常好的例子,但与我的问题相符,能够传递位置但不能传递价值 ^^ 【参考方案1】:您需要返回一个 reference 到矢量元素,以便您可以通过该引用对其进行修改:
int& operator[](std::size_t index)
/*ToDo - some bounds checking here?*/
return y[index];
会做的。 std::size_t
在这里很合适,因为它将适合您的平台。
【讨论】:
你将在 main 中访问对象为 myobj[0]=1,而不是 y[0]=1以上是关于C++ 数组重载运算符 []的主要内容,如果未能解决你的问题,请参考以下文章