当前位置:编程学习 > C/C++ >>

将撞错进行到底

[cpp]  
/*   
* 程序的版权和版本声明部分   
* Copyright (c)2013, 烟台大学计算机学院学生   
* All rightsreserved.   
* 文件名称:score.cpp                              
* 作    者:张浩                               
* 完成日期:2013年3月22日   
* 版本号: v1.0         
* 输入描述: 撞错 
* 问题描述:发现问题调试   
* 输出:  写下改错的方法 
*/      
#include <iostream>  
using namespace std;  
class Student  
{  
public:  
    void set_data(int n,char *p, char s);  
    void display();  
private:  
    int num;  
    int name[20];  
        char sex;  
};  
void Student::set_data(int n,char *p, char s)  
{  
    num=n;  
    strcpy(name,p);  
    sex=s;  
}  
void Student::display()  
{  
    cout<<"num: "<<num<<endl;  
    cout<<"name:"<<name<<endl;  
    cout<<"sex: "<<sex<<endl;  
}  
int main()  
{  
    Student stu1;  
    stu1.set_data(1,"he",'f');  
    stu1.sex="m";  
        stu1.display();  
    return 0;  
}  
以上程序出现了三个错误:
1、error C2664: 'strcpy' : cannot convert parameter 1 from 'int [20]' to 'char *'      strcpy不能把char型复制到int型 。
   所以应将私有成员中的 int name[20]改成:char name[20]就可以了。。。。。
2、error C2248: 'sex' : cannot access private member declared in class 'Student'     不能调用  定义的Student类中的私有成员'sex'
改错方法是将char sex 定义为共有成员即可。。。。
3、error C2440: '=' : cannot convert from 'char [2]' to 'char'      不能将字符串赋给数组 
这样的错误只需将 stu1.sex="m";中的双引号改为单引号即可。。。。
  
改错后的程序为:
[cpp] 
#include <iostream>  
using namespace std;  
class Student  
{  
public:  
    void set_data(int n,char *p, char s);  
    void display();  
    char sex;  
private:  
    int num;  
    char name[20];  
};  
void Student::set_data(int n,char *p, char s)  
{  
    num=n;  
    strcpy(name,p);  
    sex=s;  
}  
void Student::display()  
{  
    cout<<"num: "<<num<<endl;  
    cout<<"name:"<<name<<endl;  
    cout<<"sex: "<<sex<<endl;  
}  
int main()  
{  
    Student stu1;  
    stu1.set_data(1,"he",'f');  
    stu1.sex='m';  
    stu1.display();  
    return 0;  
}  
运行结果:
心得体会:这样做不仅可以提高我的编程能力,还可以提高我的英语,一举两得,好!!!
 

补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,