2016-11-07 4 views
1

Я перегрузил оператор [] для структуры данных, которую я создал. Я хочу использовать оператор [] в другой функции в структуре данных, чтобы присвоить значение [index + 1] [index]. Как мне это сделать?Использование [] в реализации класса, C++

Я пробовал:

  • это -> [индекс]
  • * это [индекс]
  • & это [индекс] - [индекс]
+0

Просто чтобы быть ясно: Вы хотите позвонить 'оператор []' внутри класса? – Rakete1111

+0

Да. В конечном счете, я хочу реализовать erase(), как в stl-векторе, но для другой структуры данных. –

ответ

8

Просто оберните *this в скобках:

(*this)[index] 

Другой способ следует называть оператор как функцию:

this->operator[](index) 
+0

Ваш ответ, похоже, работает для извлечения, но не для редактирования фактического содержимого структуры данных. В качестве примера, после установки (* this) [50] до 100, структура данных все еще возвращает исходное значение (* this) [50]. –

+5

Это ошибка в вашей реализации. Я уверен, что вы не возвращаете ссылку lvalue и вместо этого возвращаете prvalue – pat

+0

@CameronTylerCassidy: Тогда стоит проверить реализацию '[]' операторов. Там должно быть два из них, один возвращающий ссылку для lvaue и один возвращающий константу ссылки для rvalue. Это может быть так, что возвращающая ссылка ссылка не возвращает ссылку на объект внутри структуры. –

Смежные вопросы