学到类的时候做联系出错了,不知道错误在哪,求指点。
发表在C语言图书答疑 2017-04-25
是否精华
版块置顶:

//在头文件CStudent.h里。

#include <iostream>

using namespace std;

class CStudent

{

public:

CStudent()

{

strcpy_s(m_iName,"***");

m_iSex='f';

m_iGrade=1;

m_iClass=1;

}

char * getName(){return m_iName;}

char getSex(){return m_iSex;}

unsigned short getGrade(){return m_iGrade;}

unsigned short getClass(){return m_iClass;}

void setName(char * iName){strcpy_s(m_iName,iName);}

void setSex(char iSex){m_iSex=iSex;}

void setGrade(unsigned short iGrade){m_iGrade=iGrade;}

void setClass(unsigned short iClass){m_iClass=iClass;}

void SetInfor(char * Name,char Sex,unsigned short Grade,unsigned short Class);

void ShowInfor();

private:

char  m_iName[10];

char m_iSex;

unsigned short m_iGrade;

unsigned short m_iClass;

};

void CStudent::SetInfor(char * Name,char Sex,unsigned short Grade,unsigned short Class)

{

strcpy_s(m_iName,Name);

m_iSex=Sex;

m_iGrade=Grade;

m_iClass=Class;

}

void CStudent::ShowInfor()

{

cout<<"姓名:"<<CStudent::getName()<<"  "

<<"性别:"<<CStudent::getSex()<<"  "

<<CStudent::getGrade()<<"年"<<CStudent::getClass()<<"班"<<endl;;

}

//在源文件main.cpp里。

#include"CStudent.h"

using namespace std;

int main()

{

CStudent stu[3];

cout<<"请输入学生的姓名、性别、年级和班级:"<<endl;

char*cName;

char cSex;

unsigned short cGrade,CClass;

for(int i=0;i<3;i++)

{

cin>>cName>>cSex>>cGrade>>CClass;

stu[i].SetInfor(cName,cSex,cGrade,CClass);

}

for(int i=0;i<3;i++)

stu[i].ShowInfor();

return 0;

}


分享到:
精彩评论 5
李木子
学分:2954 LV11
2017-04-25
沙发

你好:

   首先先把CStudent.h的头文件中加入这样一行#include<string.h>,然后将代码中的strcpy_s改正strcpy,此函数是字符串复制。

quwenhui
学分:166 LV4
2017-04-27
板凳

李木子 发表于2017-04-25 17:09

你好:

   首先先把CStudent.h的头文件中加入这样一行#include<string.h>,然后将代码中的strcpy_s改正strcpy,此函数是字符串复制。

不行啊,我这修改前后编译都能通过,就是运行的时候有问题。

360截图-808140.jpg


李木子
学分:2954 LV11
2017-04-27
地板

quwenhui 发表于2017-04-27 08:23

不行啊,我这修改前后编译都能通过,就是运行的时候有问题。

360截图-808140.jpg


无标题.png

我这运行是正确的,我用的是visual c++6.0运行的。

quwenhui
学分:166 LV4
2017-04-27
4L

李木子 发表于2017-04-27 08:36

无标题.png

我这运行是正确的,我用的是visual c++6.0运行的。

char cName[10];

定义cName指针那行改成这个就行了,但是不知道为什么..

李木子
学分:2954 LV11
2017-04-27
5L

quwenhui 发表于2017-04-27 11:22

char cName[10];

定义cName指针那行改成这个就行了,但是不知道为什么..

char *cName是一个指针,没有分配内存,是只读的,不能改变,而char cName[10]是一个数组,已经分配内存,这个内存是可读可写的。

首页上一页 1 下一页尾页 5 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照