我正在编写一个集合类。我希望重载方括号操作符([])以提供对集合中元素的访问。
int operator[](int i)
{
// Do stuff here
}
我的问题是我不知道如何编写代码,以便使用这个运算符来接受一个值:
myClassInstance[0] = value;
我看不到声明方括号操作符并带有额外参数(要分配给元素的值)的方法。
我知道我可以简单地返回int&,调用者可以为其赋值,但内部每个元素存储在与公开格式不同的格式中。
这是否可能?
我正在编写一个集合类。我希望重载方括号操作符([])以提供对集合中元素的访问。
int operator[](int i)
{
// Do stuff here
}
我的问题是我不知道如何编写代码,以便使用这个运算符来接受一个值:
myClassInstance[0] = value;
我看不到声明方括号操作符并带有额外参数(要分配给元素的值)的方法。
我知道我可以简单地返回int&,调用者可以为其赋值,但内部每个元素存储在与公开格式不同的格式中。
这是否可能?
编写一个 int_proxy
类,它可隐式转换为 int
并可从 int
赋值。您至少需要两个成员函数:
operator int();
int_proxy& operator=(int);
返回一个引用对象,该对象具有operator =,可以将int存储在需要的位置。查看STL中的布尔向量技巧,例如,不一定是一个非常出色的例子。
写:
int& operator[](int i)
{
// Do stuff here
}