首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么它不对++使用我的重载操作符?

为什么它不对++使用我的重载操作符?
EN

Stack Overflow用户
提问于 2012-02-18 11:18:11
回答 1查看 169关注 0票数 5

我在.hpp文件中为++创建了一个重载操作符,然后在.hpp文件中创建了一个调用它的函数。然后,.cpp文件调用该函数,但是当该函数遇到++代码时,它不会缩进重载运算符,而是使用++的默认运算符。为什么不使用我的重载操作符呢?

下面是++的运算符:

代码语言:javascript
复制
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;
    }

下面是使用它的函数:

代码语言:javascript
复制
template <typename A_>
void testerIncrement(A_ toInc)
{

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

最后是对.cpp文件中函数的调用

代码语言:javascript
复制
ca.testerIncrement(ca.listOfValues.begin());
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-18 11:25:45

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

您似乎正在使用非成员运算符。因此您的语法应该是void operator++(迭代器&);//前缀和void operator++(Square_List,int);//后缀。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9338208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档