为什么operator []只接受一个参数?

时间:2014-10-11 14:33:46

标签: c++ operator-overloading subscript-operator

有很多与算子[]只有一个参数相关的问题,但我找不到一个真正说明原因的问题。

例如,matrix[0, 3]调用ElementT& operator[](SizeT x, SizeT y)函数似乎是语言的一种非常自然的扩展。

这种语法在语言中是否有任何特殊原因(例如不兼容),或者除了缺乏动机之外的其他任何东西实际上都阻止它被添加?

(注意:这已被标记为重复,但事实并非如此。这个问题是"为什么语言中没有这种语法?"不是"我该如何工作?围绕这个问题?"。如上所述,有很多问题可以解决后者,但没有一个能回答前者。)

1 个答案:

答案 0 :(得分:4)

不仅(在这个特定环境中很少使用)逗号操作员在工作中需要很长的过渡期才能实现标准化,我们已经有了另一个人们使用的解决方案:

ElementT& operator()(SizeT x, SizeT y)

野外的一些矩阵库使用这种形式。它有点难看,但欢迎使用C ++。 :)