将撞错进行到底
2013-03-22 10:55
295 查看
/* * 程序的版权和版本声明部分 * 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";中的双引号改为单引号即可。。。。
改错后的程序为:
#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; }
运行结果:
心得体会:这样做不仅可以提高我的编程能力,还可以提高我的英语,一举两得,好!!!
相关文章推荐
- 2008情人节短信:将肉麻进行到底
- 将重构进行到底——记一次简单的代码重构
- AMPPS 将傻瓜化进行到底
- 张宝杰:将IT创造价值进行到底的秘诀
- [安卓] 11、串口蓝牙·将软硬结合进行到底
- The Balance 母函数进行到底
- 把不务正业进行到底——SAP Song
- 将SOP进行到底 (转载)
- 中国城市批判——傻大又粗糙的沈阳:别把疯狂进行到底
- 喷墨打印机使用技巧揭秘:将省墨进行到底
- 教你合理设计数据表,将优化进行到底
- 将COM+ Events进行到底
- 表格高级使用技巧_把表格进行到底(必看)
- 浮点数到底能不能用 == 进行比较
- 将GC进行到底(一)
- 进行到底
- DevXpress控件: 第二篇--将绘图进行到底: Charter控件(附图)
- DevXpress控件: 第三篇: 将 父子 关系进行到底--TreeList 控件
- 把不务正业进行到底——SAP Song
- 将js进行到底:node学习6