2012-02-18 66 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); //后缀。

相关问题