2012-02-18 64 views
5

我在.hpp文件中爲++創建了一個重載操作符,然後在.hpp文件中調用它。然後,.cpp文件調用該函數,但是當函數碰到++代碼時,它不會發送重載操作符,而是使用++的默認操作符。爲什麼不使用我的重載操作符?爲什麼它沒有使用++的重載操作符?

這裏是++運算符:

iterator& operator ++() { // pre-increment 
     std::list<value_type>::iterator i = listOfValues.begin(); 
     advance(i,1); 
     return &*i; 
    } 

    Square_List operator ++ (int) { // post-increment 
     std::list<value_type>::iterator i = listOfValues.begin(); 
     advance(i,1); 
     return &*i; 
    } 

,這裏是使用它的功能:

template <typename A_> 
void testerIncrement(A_ toInc) 
{ 

    toInc = listOfValues.begin(); 
    cout << "\n" << *toInc; 
    ++toInc; 
    cout << "\n" << *toInc; 
    ++toInc; 
} 

最後是要求在.cpp文件功能

ca.testerIncrement(ca.listOfValues.begin()); 

回答

4

您將前綴增量運算符++重載爲具有一個類的一個參數的非成員函數運算符類型或對類類型的引用,或者使用沒有參數的成員函數運算符。

看來你使用的是非成員操作符。所以你的語法應該是 void operator ++(迭代器&); //前綴 和void operator ++(Square_List,int); //後綴。

相關問題