c++ - 友元函数的运用

浏览:41日期:2023-04-29

问题描述

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; elsereturn 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; elsecout<<'Happy Unbirthday to You!'<<endl; return 0;}

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

问题解答

回答1:

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

回答2:

bool equal(DayOfYear c1,DayOfYear c2){ if((c1.get_month()==c2.get_month())&&(c1.get_day()==c2.get_day()))return true; elsereturn false;}

没有问题了。。。

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

回答3:

//建议该函数声明成:bool equal(DayOfYear const& c1, DayOfYear const& c2)

相关文章: