注册 登录
编程论坛 C++教室

有个小题,看来挺难的,哪位高手看一下?

发布于 2008-06-07 17:52, 761 次点击
#include<iostream>
using namespace std;
class date
{
    int mo,da,yr;
public:
    date(int m,int d,int y){mo=m;da=d;yr=y;}
void disp()
{
    cout<<mo<<"/"<<da<<"/"<<yr<<endl;
}
friend date operator +(date&d,int day)
{
    date dt;
    dt.mo=d.mo;
    dt.yr=d.yr;
    day+=d.da;
    while(day>dys[dt.mo-1])
    day-=dys[dt.mo-1];
    if(++dt.mo==13)
    {
        dt.mo=1;dt.yr++;}
}
    dt.da=day;
    return dt;
}
void main()
{
    date d1(2,10,2001),d2;
    d2=d1+465;
    d2.disp();
}
调试未能通过,不知道怎麽搞?
3 回复
#2
zjl1382008-06-07 18:04
class A { };这个分号呢?
另外:你把operator +弄成友元干什么.
最后,请注意你的程序格式.
#3
sunkaidong2008-06-07 19:09
#include<iostream>
using namespace std;
class date
{
    int mo,da,yr;
public:
    date()
    {
        mo=0;da=0;yr=0;
    }
    date(int m,int d,int y)
    {
        mo=m;da=d;yr=y;
    }
void disp()
{
    cout<<mo<<"/"<<da<<"/"<<yr<<endl;
}
friend date operator +(date&d,int day);
};
date operator +(date&d,int day)
{
    date dt;
    dt.mo=d.mo;
    dt.yr=d.yr;
    day+=d.da;
   // while(day>dys[dt.mo-1])
    //day-=dys[dt.mo-1];
    if(++dt.mo==13)
    {
        dt.mo=1;dt.yr++;
    }
    d.da=day;
    return dt;
};
int main()
{
    date d1(2,10,2001),d2;
    d2=d1+465;
    d2.disp();
    return 0;
}
#4
2008-06-08 20:00
谢谢两位高手!
1