超载Square Brackets Operator以接受值

Jon*_*ood 7 c++ operator-overloading

我正在写一个集合类.我想重载方括号运算符([])以提供对集合中元素的访问.

int operator[](int i)
{
    // Do stuff here
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我没有看到如何写这个,以便我可以使用此运算符接受一个值:

myClassInstance[0] = value;
Run Code Online (Sandbox Code Playgroud)

我认为没有办法用附加参数声明方括号运算符(要赋给元素的值).

我知道我可以简单地返回int&并且调用者可以为其分配一个值,但在内部,每个元素的存储格式与公开的格式不同.

这甚至可能吗?

Jam*_*lis 9

编写一个int_proxy可隐式转换int为可分配的类int.您至少需要两个成员函数:

operator int();
int_proxy& operator=(int);
Run Code Online (Sandbox Code Playgroud)

在此代理类中,存储您需要能够检索的任何信息并在容器中设置值.在转换运算符中进行检索以及在赋值运算符中进行赋值.