2016-11-07 55 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

這是您的實施中的錯誤。我打賭你沒有返回一個左值引用,而是返回prvalue – pat

+0

@CameronTylerCassidy:那麼值得檢查'[]'運算符的實現。應該有兩個,一個返回lvaue的引用和一個返回的rvalue的const引用。可能是這種情況,一個返回引用並不真正返回對結構中對象的引用。 –