| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6382 人关注过本帖
标题:‘++’符号重载出现错误 error C2676
只看楼主 加入收藏
家力掠
Rank: 2
等 级:论坛游民
帖 子:52
专家分:16
注 册:2015-6-28
结帖率:41.18%
收藏
已结贴  问题点数:10 回复次数:5 
‘++’符号重载出现错误 error C2676
程序代码:
    -----point.h
class Point
{
public:
    Point();
    Point(float x, float y);
    ~Point();
        Point operator ++();
    Point operator --();
private:
    float x, y;
}

      -----point.cpp
Point Point::operator ++()
{
    
    this->x = this->x + 1;
    this->y = this->y + 1;
    return *this;
}

Point Point::operator --()
{
    this->x = this->x - 1;
    this->y = this->y - 1;
    return *this;
}

            ------main.cpp
        Point r5. r6;
        r5 = p1++;
    r6 = p1--;



VS2015 错误:
1>c:\users\busters\documents\visual studio 2015\projects\c++作业\overload\overload\overload.cpp(14): error C2676: 二进制“++”:“Point”不定义该运算符或到预定义运算符可接收的类型的转换

1>c:\users\busters\documents\visual studio 2015\projects\c++作业\overload\overload\overload.cpp(15): error C2676: 二进制“--”:“Point”不定义该运算符或到预定义运算符可接收的类型的转换
2016-04-17 16:37
家力掠
Rank: 2
等 级:论坛游民
帖 子:52
专家分:16
注 册:2015-6-28
收藏
得分:0 
没人吗
2016-04-17 18:53
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:5 
贴代码,代码应当完整且不含无关的垃圾,否则别人不愿意浪费时间补完你的代码,并且和你一一确认某某处是不是输入错误(比如,class Point定义完毕后是不是忘了分号,比如r5. r6中是不是逗号打错成分号了,main中p1是什么,等等)

程序代码:
class Point
{
public:
    Point();
    Point& operator++();
    Point& operator--();
private:
    double x, y;
};

Point::Point() : x(0), y(0)
{
}

Point& Point::operator++()
{
    x = x + 1;
    y = y + 1;
    return *this;
}

Point& Point::operator--()
{
    x = x - 1;
    y = y - 1;
    return *this;
}

#include <iostream>

int main( void )
{
    Point a;
    ++a;

    Point b;
    --b;

    return 0;
}

2016-04-18 12:44
家力掠
Rank: 2
等 级:论坛游民
帖 子:52
专家分:16
注 册:2015-6-28
收藏
得分:0 
回复 3楼 rjsp
非常感谢你的帮助。

为什么使用  ++a 不会报错  而使用a++会报错?

2016-04-18 13:17
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
因为你重载的是++a,不是a++
收到的鲜花
  • 家力掠2016-05-15 00:20 送鲜花  1朵   附言:我很赞同
2016-04-18 22:18
仰望星空的
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:50
专家分:248
注 册:2015-9-28
收藏
得分:5 
运算符重载,相当于重新写了函数,比如operator ++()之后,你在计算++a时候,此时调用的是operator++(a),那个a可理解为函数的参数,
如果是a++,相当于重载函数没有相应的参数去传递给operator++()了,所以会出错。
重载a++,可以是Point Point::operator ++(int)
收到的鲜花
  • 家力掠2016-05-15 00:19 送鲜花  1朵   附言:我很赞同
2016-04-20 10:09
快速回复:‘++’符号重载出现错误 error C2676
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015722 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved