2014-10-11 108 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

相關問題