Как перегрузить несколько индексов оператора индекса массива?

Допустим, у меня есть класс, пусть это будет foo. Он содержит объект someclass obj[10][10].

Теперь я хочу сослаться на bar, который является объектом типа foo, таким образом, чтобы bar[7] был эквивалентен bar.obj[7] и возвращал объект типа someclass*. Это довольно просто.

Но я также хочу ссылаться на bar таким образом, чтобы bar[7][3] был эквивалентен bar.obj[7][3] и возвращал объект типа someclass. Сейчас не все так просто...

Как это сделать?


person yomol777    schedule 08.04.2020    source источник
comment
Возможно, это поможет: Перегрузка оператора[][]   -  person Adrian Mole    schedule 08.04.2020
comment
Если вы хотите, чтобы первое возвращало указатель, второе измерение уже выполнено.   -  person chris    schedule 08.04.2020
comment
это можно сделать, но гораздо проще использовать вместо него operator()(size_t,size_t)   -  person 463035818_is_not_a_number    schedule 08.04.2020


Ответы (1)


таким образом, что bar[7] эквивалентен bar.obj[7] и возвращает объект типа someclass*.

Но если он возвращает someclass*, то он не будет эквивалентен bar.obj[7]. Это должно было бы вернуть someclass(&)[10], чтобы быть эквивалентным.

Обратите внимание, что вы также можете захотеть иметь перегрузку const.

Но я также хочу обращаться к bar таким образом, чтобы bar[7][3]

Пока вы перегружаете оператор индекса, как описано, вы можете сделать это - он работает как с вашим предложением указателя, так и с моим справочным предложением.

person eerorika    schedule 08.04.2020