1

我目前正在嘗試爲我的方形列表contatiner的.begin()上的++運算符重載。Overloading Operators

我在我的HPP文件我有以下幾點:

template <typename T_> 
    class sq_list 
    { 

    public: 
     typedef T_* iterator; 

     iterator _itr; 
     square_list(iterator n) : _itr(n) { } 


    sq_list operator ++ (sq_list<int> lhs) {  
     return lhs++; 
     } 
    }; 

目前,這要求我把迭代方列表對象內。 我需要做的是在.cpp文件執行++ name.begin()時調用++方法。而不是將該值放入我的容器中,然後遞增該容器。 如何讓我的重載函數只用於++ name.begin()來增加我的迭代器,而不必將其放入我的sq_list容器中?

謝謝!

+0

有什麼問題? – 2012-02-19 20:17:59

+0

@LuchianGrigore我如何讓我的++運算符只是在迭代器本身上工作,而不是將它放到我的方形列表對象中 – user1219627 2012-02-19 20:19:17

+0

爲什麼你的'operator ++'帶兩個'sq_list'參數(隱式'this'和'lhs' )?根據我的理解,你想爲你的迭代器重載'operator ++'(你沒有用那個代碼做btw)。因爲'iterator'是一個爲什麼你需要重載操作符的指針?指針已經有一個'操作員++' – Grizzly 2012-02-19 20:20:29

回答

0

通常,您需要在迭代器上定義運算符。在這裏,你的迭代器是一個指向底層元素類型的指針,所以++已經可以工作。你是否嘗試過簡單地在迭代器上調用++,完全沒有執行operator++