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来比较这两个对象是否相等,从而来判断某一天是否为生日
高洛峰2017-04-17 13:55:38
問題第一位好人已經解答明白,我想說的是,你的程式碼寫的有點不符規範,private怎麼放在了public前面,.h .cpp和main放在一塊不太好吧,變量命名需要遵守一定的規則,像int型,一般前綴都是i_等等。 。 。
寫程式碼需要像照顧小孩一樣細心
天蓬老师2017-04-17 13:55:38
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
。