【发布时间】:2014-02-10 15:06:30
【问题描述】:
我正在编写一个简单的模板,它将值存储在一个数组中,检查没有重复。
我重载了 [] 运算符,因此它可以像普通数组一样使用:
T operator [] (int index) { return _array[index]; }
但是如果我想直接更改值,那是行不通的,当然我可以编写一些 changeVal(int index, T value) 函数,但如果我可以使用 = 运算符来做到这一点会更好。我可以一次重载多个运算符吗?喜欢:
operator [] = (int index, T val) { _array[index] = val; }
这不适合我:有什么方法可以实现吗?
显然我是唯一一个想到这一点的傻瓜,或者答案可能只是隐藏在数百万个问题中的一些问题中,比如“重载运算符问题”这样的通用句子,但我不会用我的一生来浏览这些问题(确实已经很老了)。
非常感谢大家,祝你有美好的一天!!!
编辑:(见下面的评论) 即使我的主要问题得到解决,主要问题的答案 - 是否可能以及如何(即使有一些技巧或其他)仍然会受到赞赏 - 这肯定是质量信息!谢谢大家!!!
【问题讨论】:
-
[OT] :请注意,如果您可以通过
operator []更改值,则可能会破坏您在数组中的唯一性... -
非常好!我把检查放在一个 add(T e) 函数中,但是如果你说如果我使用 [] 来更改一个值,它可能也需要检查......所以最后我仍然需要以某种方式重载[] 和 = 一次,或者检测到 [] 重载用于更改值...有谁知道如何做到这一点???
-
operator []需要返回一个带有operator =的代理 并隐式转换为const T&。
标签: c++ templates operator-overloading