c++ - 友元函数的运用
迷茫
迷茫 2017-04-17 13:53:38
[C++讨论组]

error C2668: 'equal' : ambiguous call to overloaded function
模糊调用重载函数

#include<iostream>
using namespace std;
class DayOfYear
{
private:
    int year,month,day;
public:
    DayOfYear(){}
    DayOfYear(int x,int y){month=x;day=y;}
    int get_month(){return month;}
    int get_day(){return day;}
    void input()
    {
        cin>>month>>day;
    }
    void output()
    {
        cout<<month<<day;
    }
    friend bool equal(DayOfYear c1,DayOfYear c2);
};
bool equal(DayOfYear c1,DayOfYear c2)
{
    if((c1.get_month==c2.get_month)&&(c1.get_day==c2.get_day))
        return true;
    else
        return false;
}
int main()
{
    DayOfYear today,your_birthday(3,21);
    cout<<"Enter today's date:"<<endl;
    today.input();
    cout<<"Today's date is";
    today.output();
    cout<<"Your birthday is";
    your_birthday.output();
    if(equal(today,your_birthday))
        cout<<"Happy Birthday to You!"<<endl;
    else
        cout<<"Happy Unbirthday to You!"<<endl;
    return 0;
}

设计一个DayOfYear类,包含年、月、日等数据成员,并声明一个友元函数equal,在主函数中定义两个DayOfYear类的对象,一个用来存放生日,一个用来存放某一具体的日子,通过友元函数equal来比较这两个对象是否相等,从而来判断某一天是否为生日

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(3)
高洛峰

问题第一位好人已经解答明白,我想说的是,你的代码写的有点不符规范,private怎么放在了public前面,.h .cpp和main放在一块不太好吧,变量命名需要遵循一定的规则,像int型,一般前缀都是i_等等。。。
写代码需要像照顾小孩一样细心

天蓬老师
bool equal(DayOfYear c1,DayOfYear c2)
{
    if((c1.get_month()==c2.get_month())&&(c1.get_day()==c2.get_day()))
        return true;
    else
        return false;
}

没有问题了。。。

个人觉得(与他人无关)全写英文比较丑,某些地方还是用中文比较好看。例如cout<<"键入当前日期:"<<endl

高洛峰
//建议该函数声明成:
bool equal(DayOfYear const& c1, DayOfYear const& c2)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号