| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 858 人关注过本帖
标题:这个关于类的题错在哪了呢?
只看楼主 加入收藏
yydjtcy
Rank: 1
来 自:中国海洋大学
等 级:新手上路
帖 子:52
专家分:7
注 册:2008-11-25
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:6 
这个关于类的题错在哪了呢?
这个关于类的程序错在哪了?

原题是这样的:
建立一个名为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++编程,就出现这么个问题,很受打击,各位帮忙看看哪里出错了,不胜感激!!!


搜索更多相关主题的帖子: long 姓名 
2009-10-15 21:50
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
收藏
得分:10 
这是个很基础的问题,一个数字以0开头是表示一个八进制数,八进制数里可没有'8'和'9',自然不知道这是什么。07002968改为7002968。
C中以0开头,后面跟x,表示十六进制,如0x008F,这是一个十六进制数。
题外话,你的文件名起的实在是不敢恭维,动点脑筋起个看上去专业点的。

[ 本帖最后由 debroa723 于 2009-10-15 23:19 编辑 ]
2009-10-15 23:16
yydjtcy
Rank: 1
来 自:中国海洋大学
等 级:新手上路
帖 子:52
专家分:7
注 册:2008-11-25
收藏
得分:0 
回复 2楼 debroa723
谢谢了,我还是基础不扎实,这门课刚上,老师要求上机,为方便文件名就写成题号了,我前边定义类里的那个构造函数名也写错了...你说的以及那个我都改了,还是出现了一个错误,不知道什么问题
3 50main.obj : error LNK2001: unresolved external symbol "public: void __thiscall CStudent::result(void)" (?result@CStudent@@QAEXXZ)
3 50main.obj : error LNK2001: unresolved external symbol "public: __thiscall CStudent::CStudent(char *,long,char *,int)" (??0CStudent@@QAE@PADJ0H@Z)
Debug/3 50main.exe : fatal error LNK1120: 2 unresolved externals
执行 link.exe 时出错.
2009-10-16 07:02
calm2599
Rank: 2
等 级:论坛游民
威 望:1
帖 子:6
专家分:50
注 册:2009-10-15
收藏
得分:0 
我修改之后运行没有问题,有可能是你的VC设置里的 调用约定 的问题吧
2009-10-16 16:43
yydjtcy
Rank: 1
来 自:中国海洋大学
等 级:新手上路
帖 子:52
专家分:7
注 册:2008-11-25
收藏
得分:0 
回复 4楼 calm2599
什么意思啊,什么设定啊?
2009-10-16 21:28
yydjtcy
Rank: 1
来 自:中国海洋大学
等 级:新手上路
帖 子:52
专家分:7
注 册:2008-11-25
收藏
得分:0 
回复 2楼 debroa723
奇怪了,每次调试就是那个错误,后来把代码复制在记事本里,重建了个文件夹粘贴过去就没错了?什么原因啊?
2009-10-16 22:32
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
收藏
得分:0 
和楼上说的一样,是设置问题,编译器在第一次编译后,保存了obj文件用于连接,在第一次编译后,由于'CStudent::CStudent' 是错误的,所以编译未生成二进制代码,obj里不存在该函数,另一个同样,而由于设置问题,应该是在修改cpp文件之后,重新编译时没有重新生成新的obj文件,打开增量编译开关应该就好了,或是在编译前先清理一下临时文件。

[ 本帖最后由 debroa723 于 2009-10-17 12:28 编辑 ]
2009-10-17 12:26
快速回复:这个关于类的题错在哪了呢?
数据加载中...
 
   



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

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