| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1110 人关注过本帖
标题:这个关于类的程序错在哪了?
只看楼主 加入收藏
yydjtcy
Rank: 1
来 自:中国海洋大学
等 级:新手上路
帖 子:52
专家分:7
注 册:2008-11-25
结帖率:100%
收藏
 问题点数:0 回复次数:1 
这个关于类的程序错在哪了?
原题是这样的:
建立一个名为student的类,该类有以下几个私有成员变量:学生姓名,学号,性别,年龄。还有以下两个成员函数:一个用于初始化学生姓名,学号,性别,年龄的构造函数,一个是用于输出学生信息的函数。编写一个主函数,声名一个学生对象,然后调用成员函数在屏幕输出学生信息。

我把类建立在头文件3 50.h里:
#include <iostream.h>
#include <string.h>
class CStudent{
private:
    char name[20];
    long xuehao;
    char sex[20];
    int age;
public:
    CSsudent(char*,long,char*,int);
    void result();
};

我把构造函数和另一个成员函数建在源文件3 50.cpp里:
#include "3 50.h"
CStudent ::CStudent(char *px,long x,char*py,int z)
{strcpy(name,px);
xuehao=x;
strcpy(sex,py);
age=z;
}
void CStudent ::result()
{cout<<"姓名:"<<name<<endl<<"学号:"<<xuehao<<endl<<"性别:"<<sex<<endl<<"年龄:"<<age<<endl;
}

我把主函数建在源文件3 50main.cpp里:
#include "3 50.h"
void main()
{CStudent example("令狐冲",07002968,"男",20);
example.result();
}

可是编译时出现如下错误:
C:\Documents and Settings\aa\桌面\VC\任子健第二次作业\3 50\3 50main.cpp(3) : error C2041: illegal digit '9' for base '8'
C:\Documents and Settings\aa\桌面\VC\任子健第二次作业\3 50\3 50main.cpp(3) : error C2041: illegal digit '8' for base '8'
C:\Documents and Settings\aa\桌面\VC\任子健第二次作业\3 50\3 50main.cpp(3) : error C2661: 'CStudent::CStudent' : no overloaded function takes 4 parameters
执行 cl.exe 时出错.

我弄了两个多小时了,就是不知道错在哪里,难受死了,今天第一次用C++编程,就出现这么个问题,很受打击,各位帮忙看看哪里出错了,不胜感激!!!


[ 本帖最后由 yydjtcy 于 2009-10-15 21:42 编辑 ]
搜索更多相关主题的帖子: 这个 
2009-10-15 21:35
haitao9999
Rank: 2
等 级:论坛游民
帖 子:30
专家分:39
注 册:2006-4-10
收藏
得分:0 
1.你的学生类中第2个成员即学号定义为long存在潜在问题,在主函数中你提供的第2个参数07002968,第一个数字是0,编译器会将它认为是一个8进数,而8进数中是不能有9和8两个数字的,所以在编译器读到第一个9时会报错,解决的办法是将类中第2个参数定义为字符数组。在构造函数初始化定义时要对输入的学号进行检查,防止读入非数字的学号(如果你的学号中有字符,可不用添加数字检查)。


修改后的代码在我的机器上运行OK。仔细看下。

******350.h*****
#include <string>
#include <iostream>
using namespace std;
 
class CStudent{
private:
    char name[20];
    char xuehao[20];
    char sex[20];
    int age;
public:
    CStudent(char*,char *,char*,int);
    void result();
};

*******350.cpp********
#include "350.h"
#include <stdlib.h>
CStudent ::CStudent(char *px,char *x,char*py,int z)
{
    if(isalpha(*x))
        {
            cout<<"!!!!!!!!!!!请检查并重新输入学号!!!!!!!!!!!!!!"<<endl;
            exit(0);
    }
    strcpy(name,px);
    strcpy(xuehao,x);
    strcpy(sex,py);
    age=z;
     
}
void CStudent ::result()
{
    cout<<"姓名:"<<*name<<endl<<"学号:"<<xuehao<<endl<<"性别:"<<*sex<<endl<<"年龄:"<<age<<endl;
}
 
 *******350main.cpp********
#include "350.h"
 int main()
{
    CStudent example("abc","af002968","男",20);
    example.result();
}
2009-10-17 00:24
快速回复:这个关于类的程序错在哪了?
数据加载中...
 
   



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

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