c++ - 为什么它不使用我重载的运算符来进行++?

标签 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());

最佳答案

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

看来您使用的是非成员(member)运营商。所以你的语法应该是 无效运算符++(迭代器&);//字首 和 void operator++(Square_List, int);//后缀。

关于c++ - 为什么它不使用我重载的运算符来进行++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9338208/

相关文章:

C++ 深度复制链表

javascript - 注释中的条件运算符 floatval

c++ - QLinkedList算子+效率

Ruby:重载对实例属性的索引赋值

c++ - *this-> 不能作为函数使用

c++ - 编译器抛出 "ambiguous overload for operator"

c++ - 找到两个字符串 vector 的交集

c++ - Qt,从 qApp->processEvents() 中排除事件

c++ - 基于 cmake 的项目 : checking for contrib modules 中的 OpenCV

c - 为什么模数 (%) 运算符适用于 char 但不适用于浮点类型?