使用operator[]和operator=

发布于 2024-08-31 06:20:37 字数 322 浏览 3 评论 0原文

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

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
}

在这种情况下如何重载赋值“=”运算符以与“[]”运算符一起使用?

Given a simple class that overloads the '[ ]' operator:

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

  private:
    int a[5];
};

I would like to accomplish the following:

void main()
{
   A Aobject;

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

How can I overload the assignment '=' operator in this case to work with the '[ ]' operator?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

阿楠 2024-09-07 06:20:37

您不会重载 = 运算符。您返回一个参考。

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

确保还提供 const 版本:

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

You don't overload the = operator. You return a reference.

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

Make sure to provide a const version as well:

const int& operator[](int p_index) const
{
   return a[p_index];
}
诗酒趁年少 2024-09-07 06:20:37

让它返回一个引用:

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

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

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

Make it return a reference:

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

Note that you will also want a const version, which does return a value:

int operator[](int p_index) const
{
   return a[p_index];
}
又怨 2024-09-07 06:20:37

这里的问题是您返回的是可用 a 中包含的值。

在 main 中,您尝试分配不可用的 int 变量。

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

意味着不能将值分配给不可用的变量。

请将运算符[]重载函数的返回类型更改为引用或指针,这样就可以正常工作。

The problem here is you are returning the value which is contained in vaiable a.

In main you are trying to assign int variable which is not available.

You would have seen compilation error "error C2106: '=' : left operand must be l-value" like this.

Means the value cannot be assigned to a variable which is not available.

Please change return type of operator [] overloading function into reference or pointer it will work fine.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文