2014-02-18 24 views
-2

我想用一个私人嵌套V类之间进行区分重载括号运算符[] [i] = VAL和val = V [I]超载方括号运营商,私人嵌套类

+2

如果你写'val2 = v [i] = val1',应该调用哪一个? – CompuChip

+2

对你有好处。到目前为止你尝试了什么,你遇到了什么问题? – Angew

+0

如果它是一个私有嵌套类,为什么不只是提供方法名称_clearly_描述(side-)效果,而不是一些模糊的东西,这取决于你在哪里放它的行为? – CompuChip

回答

0

你不需要一个私有嵌套类来区分这些情况。只需创建一个const。

public: 
    T& operator[](size_t index); 
    const T& operator[](size_t index) const; 

如果你这样做,const变量将在常量右侧的情况下被使用和分配给在左侧的元素时非const一个将被使用。

+2

不,区分它是否应用于'const'对象,而不是返回值是否被分配给。 –

+0

@MikeSeymour,对,这就是为什么我说“const”的右手边。 (如果右边是非常量,则使用非常量变量)。但我想象这是OP真正需要的。 –

+0

不,这是行不通的,因为在作业的RHS上可能有一个“const”或非'const'实例。 – juanchopanza