Если вы внимательно посмотрите на http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B, это объяснит вам, что, как вы сказали, стандартный оператор C ++ распознает оператор [] как двоичный оператор.Оператор [], вообще говоря, двоичный, и, несмотря на возможность сделать его унарным, он всегда должен использоваться как двоичный внутри класса, даже если он не имеет смысла вне класса.
Этохорошо объяснено в ссылке, которую я вам предоставил ... Обратите внимание, что иногда многие программисты перегружают операторы, не слишком задумываясь о том, что они делают, иногда перезагружая их некорректным образом;компилятор прост и согласен с этим, но, вероятно, это был неправильный способ перегрузить этот оператор.
Следование инструкциям, подобным тому, которое я вам предоставил, - хороший способ сделать все правильноманера.
Итак, всегда остерегайтесь примеров, когда операторы перегружены без надлежащей практики (вне стандарта), сначала обратитесь к стандартным методам и используйте те примеры, которые им соответствуют.