C ++数组重载运算符[]

时间:2014-11-19 16:16:34

标签: c++ class operator-overloading

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 =?

1 个答案:

答案 0 :(得分:3)

您需要将引用返回到vector元素,以便您可以通过该引用修改它:

int& operator[](std::size_t index) {
    /*ToDo - some bounds checking here?*/
    return y[index];
}

会做到的。 std::size_t在此适用,因为它的大小适合您的平台。