2014-10-11 122 views
3

有很多与运算符[]只有一个参数有关的问题,但我找不到真正说明原因的问题。为什么operator []只有一个参数?

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

是否有任何特殊的原因(如不兼容),这种语法不是在语言中,或者除了缺乏动机,实际上阻止它被添加? (注意:这已被标记为重复,但不是,这个问题是“为什么不是这种语言的语法?”而不是“我该如何解决这个问题?”。如上所述,在那里有很多问题可以解决后者,但没有回答前者的问题。)

+3

可能与'a [1,3]'目前已经完全有效的语法(','是逗号运算符)有关。 – 2014-10-11 14:35:08

+0

https://groups.google.com/a/isocpp.org/forum/#!topic/std-proposals/tOJx2TcHpH0 – chris 2014-10-11 14:35:16

+0

运算符在C++中的重载并不能真正改变重载操作符如何工作的基础知识,在C++中没有运算符'[]',它具有多个值。 – 2014-10-11 14:35:40

回答

4

不仅(在这个特定的上下文中很少使用)逗号运算符扳手在作品中需要漫长的过渡期来获得这个标准化的,我们已经有了另一种人们使用的解决方案:

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

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

+0

和其他人使用(或也使用)代理,所以你可以链接它们。 – Deduplicator 2014-10-11 14:48:06

+0

谢谢,我已经(幸福地)忘记了关于逗号操作符的所有内容。 – user673679 2014-10-11 14:48:35

相关问题