【问题标题】:C++ array overloading operator []C++ 数组重载运算符 []
【发布时间】: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 只是网络上寻找此类问题答案的众多资源之一。希望人们尽可能多地利用它们。
  • 非常好的例子,但与我的问题相符,能够传递位置但不能传递价值 ^^

标签: c++ class operator-overloading


【解决方案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
猜你喜欢
  • 2016-08-30
  • 2018-11-27
  • 2016-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-19
  • 1970-01-01
相关资源
最近更新 更多