编辑:该问题不是为了覆盖操作符[]
,我知道该怎么做
我已经实现了自己的集合类,并且为了分配数据,我想提供与std::vector
相同的运算符/功能。
但是,我还没有找到定义运算符[index]=elm
和at(index) = elm
的方法。
我什至不完全确定要搜索的术语,因为这两个词不完全是运算符
答案 0 :(得分:4)
定义operator[]
重载和at
函数以返回对指定项目的引用。然后,您可以通过该引用分配新值。
答案 1 :(得分:2)
没有[]=
运算符。如果您的operator[]
函数返回了可以分配给它的引用,则仅此而已。
一个简单的例子来演示这个想法。
struct Foo
{
int i;
int& operator[](int) { return i; };
int operator[](int) const { return i; };
}
现在您可以使用
Foo f;
f[10] = 20; // The index is not used by Foo::operator[]
// This is just to demonstrate the syntax.
您需要使用at()
函数做同样的事情。