标题:求助,这个程序哪里错了??
只看楼主
guowei3758
Rank: 2
来 自:陕西咸阳
等 级:论坛游民
帖 子:58
专家分:72
注 册:2010-4-9
结帖率:55.56%
已结贴  问题点数:10 回复次数:8 
求助,这个程序哪里错了??
#include<iostream>
#include<cstdlib>
using namespace std;
class date
{
private:
    int year;
    int month;
    int day;
public:
    date(int y,int m,int d)
    {
        cout<<"构造date"<<endl;
    }
    inline void copy(int y,int m,int d)
    {
        year=y;
        month=m;
        day=d;
    }
    inline void print2()
    {
        cout<<year<<"."<<month<<"."<<day<<endl;
    }
    ~date()
    {
    }
};
class people
{
private:
    long int number;
    char sex;
    char id[20];
    int y,m,d;
public:
    date b1(0,0,0);
    people()
    {
            number=0;sex='\0';
            y=m=d=0;
    }
    inline void xinxi()
    {
            cout<<"please input the number:";
            cin>>number;
            cout<<"please input the sex:(m/f)";
            cin>>sex;
            cout<<"please input the id:";
            cin>>id;
    }
    inline void birth()
    {
        cout<<"the birthday"<<endl;
        cout<<"please input the year:";
        cin>>y;
        cout<<"please input the month:";
        cin>>m;
        cout<<"please input the day:";
        cin>>d;
        b1.copy(y,m,d);
    }
    inline void print1()
    {
        cout<<number<<endl
            <<sex<<endl
            <<id<<endl;
        b1.print2();
    }
    ~people()
    {
    }
};
int main()
{
    int i,n;
    system("color 9e");
    people p1[1000];
    cout<<"How many people?";
    cin>>n;
    for(i=0;i<n;i++)
    {
        p1[i].xinxi();
        p1[i].birth();
    }
    for(i=0;i<n;i++)
    {
        p1[i].print1();
    }
    return 0;
}
哪里错了呢??
搜索更多相关主题的帖子: private include public people number 
2010-05-08 19:17
ltyjyufo
Rank: 9Rank: 9Rank: 9
来 自:未来
等 级:蜘蛛侠
威 望:2
帖 子:353
专家分:1166
注 册:2009-10-25
得分:0 
  我编译时连cl.exe都是错的,我的一直用着好好的啊。。。

翱翔天空的雄鹰固然令人羡慕,却容易被禁锢于牢笼之中,只有那夜色中的蝙蝠才是真正自由的飞翔者....
2010-05-08 21:19
shiyuehai
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:96
专家分:116
注 册:2009-9-4
得分:4 
我知道怎么改,在定义date构造函数的时候给参数默认值,然后下面date b1(0,0,0);改成date b1就可以了
,原因不是很清楚,因为也是刚接触c++不久,还在学习中,不知道是不是因为嵌套中无法显式调用构造函数还是其他原因呢,等下看看其他高手怎么说,我也学习下
2010-05-08 21:25
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:605
专家分:2489
注 册:2009-4-8
得分:0 
类里面的数据成员不能自己初始化或者给它赋值,只有在构造函数里才能对数据成员进行初始化或者赋值

迭代的是人,递归的是神。
2010-05-08 21:43
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:605
专家分:2489
注 册:2009-4-8
得分:2 
回复 3楼 shiyuehai
本来每个类都会提供一个不带参数的构造函数。但是只要我们自己写了一个构造函数(不管有没有带参数),那个默认提供给我们的构造函数就会没有掉。

迭代的是人,递归的是神。
2010-05-08 21:47
shiyuehai
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:96
专家分:116
注 册:2009-9-4
得分:0 
回复 5楼 lintaoyn
呵呵。谢谢你,我知道系统会给我们提供默认的构造函数,但我知道lz的意图就是如果我们不输入就默认日期为0 0 0,所以我才给他个带默认值的构造函数。。。我刚刚也是想说你那个原因出来,就是不知道怎么表达,怕说错了,我还处于初级阶段,希望以后多多指教
2010-05-08 22:32
西玉
Rank: 1
来 自:河南郑州
等 级:新手上路
帖 子:7
专家分:3
注 册:2010-5-8
得分:2 
b1.copy(y,m,d);      b1.print2();     未定义

system("color 9e");   should have a prototype
2010-05-10 11:52
刚开始吧
该用户已被删除
得分:2 
提示: 作者被禁止或删除 内容自动屏蔽
2010-05-10 14:06
kekin
Rank: 2
等 级:论坛游民
帖 子:59
专家分:85
注 册:2010-3-26
得分:0 
回复 3楼 shiyuehai
貌似你说的改了那个不行哟,相当于没有赋初始值,会报错哟~~
改了后好像可以了,就是定义构造函数在类外,同时赋初始值。
代码上传在这里,感兴趣可以看看!
date.rar (1.36 KB)
2010-05-13 22:00



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-305867-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.649803 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved