[英]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.