模板c ++一次重载多个运算符

时间:2014-02-10 15:06:31

标签: c++ templates operator-overloading

我正在编写一个简单的模板,它将值存储在一个数组中,检查没有重复。

我重载[]运算符,因此它可以像常规数组一样使用:

T operator [] (int index) { return _array[index]; }

但是,如果我想直接更改值,那么这不起作用,当然我可以编写一些changeVal(int index,T value)函数,但如果我可以使用=运算符来实现它会更好。我可以一次超载多个运算符吗?喜欢:

operator [] = (int index, T val) { _array[index] = val; }

那不能为我编译:有没有办法实现呢?

显然我是唯一一个已经想到这一点的人,或者答案只是隐藏在数百万个问题中,如“重载操作员问题”这样的通用句子,但我不会花一辈子的时间浏览那些(已经做得很老了。)

非常感谢大家,祝你有个美好的一天!

编辑:(见下文评论) 即使我的主要问题得到解决,主要问题的答案 - 是否可能以及如何(即使有一些技巧或其他)仍然会被赞赏 - 这将是质量信息肯定!谢谢大家!!!

1 个答案:

答案 0 :(得分:4)

如果您希望能够更改值,则需要返回引用:

T& operator [] (int index) { return _array[index]; }

习惯上也提供此运营商的const版本:

const T& operator [] (int index) const { return _array[index]; }

这使您const可以访问const个实例的元素。