使用operator []和operator =

时间:2010-05-04 15:50:16

标签: c++ operator-overloading

给定一个简单的类重载'[]'运算符:

class A
{
  public:
    int operator[](int p_index)
    {
       return a[p_index];
    }

  private:
    int a[5];
};

我想完成以下任务:

void main()
{
   A Aobject;

   Aobject[0] = 1;  // Problem here
}

在这种情况下如何重置赋值'='运算符以使用'[]'运算符?

3 个答案:

答案 0 :(得分:16)

您不会使=运算符超载。你返回一个参考。

int& operator[](int p_index)
{
   return a[p_index];
}

确保同时提供const版本:

const int& operator[](int p_index) const
{
   return a[p_index];
}

答案 1 :(得分:5)

让它返回参考:

int & operator[](int p_index)
{
   return a[p_index];
}

请注意,您还需要一个const版本,它确实返回一个值:

int operator[](int p_index) const
{
   return a[p_index];
}

答案 2 :(得分:0)

这里的问题是你要返回vaiable a中包含的值。

在main中,你试图分配一个不可用的int变量。

你会看到编译错误“错误C2106:'=':左操作数必须是l值”这样。

表示无法将值分配给不可用的变量。

请将操作符[]重载函数的返回类型更改为引用或指针,它将正常工作。