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有一个公共成员,一个包含两个元素的整数数组。现在,我需要,而不是在主myobj.y[0] = 1;
中写入,以重载operator [],以便通过编写y[0] = 1;
来执行相同的操作,将数组的元素设置为等于{{1这里举个例子。我一直在努力奋斗一个多小时,起初我不知道该宣告运营商[],也许无效?其次,在任何情况下,我都可以将数组的位置传递给参数x但是我不知道如何传递值,我是否应该重载operator =?
答案 0 :(得分:3)
您需要将引用返回到vector元素,以便您可以通过该引用修改它:
int& operator[](std::size_t index) {
/*ToDo - some bounds checking here?*/
return y[index];
}
会做到的。 std::size_t
在此适用,因为它的大小适合您的平台。