编程论坛's Archiver

辛令超 发表于 2008-6-7 17:52

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

#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();
}
调试未能通过,不知道怎麽搞?

zjl138 发表于 2008-6-7 18:04

class A { };这个分号呢?
另外:你把operator +弄成友元干什么.
最后,请注意你的程序格式.

sunkaidong 发表于 2008-6-7 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;
}

辛令超 发表于 2008-6-8 20:00

谢谢两位高手!

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.