为什么不使用我的重载运算符++?

时间:2012-02-18 03:18:11

标签: c++ operators operator-overloading increment

我在.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());

1 个答案:

答案 0 :(得分:4)

使用具有类类型的一个参数的非成员函数运算符或对类类型的引用,或者使用不带参数的成员函数运算符,重载前缀增量运算符++。

您似乎正在使用非成员运营商。所以你的语法应该是 void operator ++(iterator&amp;); //字首 和void operator ++(Square_List,int); //后缀。