簡體   English   中英

試圖重載operator ++,無法在沒有對象的情況下調用成員函數

[英]Trying to overload operator++, cannot call member function without object

抱歉,如果格式化不正確,我是新來的。 我也嘗試尋找解決方案,但找不到有效的解決方案。

我正在嘗試為二進制搜索樹類創建一個迭代器。 大致來說,我的代碼看起來像

template<class Key, class Value>
class BST {
  protected:
    //stuff
  public:
    //stuff
    class iterator {
      public:
        //member functions
        iterator& operator++() {
          //gets next node
        }
    }
}

所以在我的主要功能中,我創建了一個帶有

BST<string, int>::iterator it = bst.begin()

而且有效。 我可以使用迭代器訪問該節點。 但是在下一行中,當我嘗試

it++;

我收到編譯器錯誤,說我“無法在沒有對象的情況下調用成員函數”。 我不明白為什么不呢? 如果我在'it'上調用operator ++,難道它不應該在'it'上運行嗎?

后綴增量運算符重載要求在其簽名中包含一個虛假的int argumet-使其與前綴確定區分開來。 像這樣:

   iterator operator++(int ) {
      //gets next node
    }

您通常還從后綴增量中返回一個值,而不是從引用中返回,因為期望您返回預增量的對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM