我有一个代理用作容器中的返回类型而不是实际数据,尽可能复制容器直到实际更改为止。
这是返回代理的方法:
Proxy operator[]( unsigned long index )
{
return ( Proxy( *this, index ) );
}
现在的问题是容器的数据是用户定义的对象。我需要一种方法来区分实例的用户调用常量和非常量方法,以便知道是否需要首先复制容器。
对于非常数方法,我使用了操作符箭头:
Proxy
{
...
UserDefinedObject* operaotr->() { return &m_instance; }
UserDefinedObject* operaotr=>() { m_instance.CopyOnWrite(); return &m_instance; }
...
private:
UserDefinedObject& m_instance;
unsigned long m_index;
};
现在我试图为常量方法找到一种方法。
问题是这是唯一一个在结果上重新应用的运算符,并且点运算符不能重载。
有没有办法让另一个操作符重载以获得类似于操作符箭头的行为,或者您能想到的其他方式会让我获得所需的行为?
非常感谢!