[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;
}
運行結果:
心得體會:這樣做不僅可以提高我的編程能力,還可以提高我的英語,一舉兩得,好!!!