题目
这是我的代码:
我的代码最后Tom那里发生了错误,不知怎么改?
你的类中setName是一个char*类型的,不能这么赋值。
代码修改如下:
#include <iostream>
using namespace std;
class Student
{
private:
int mScore;
char* mName;
public:
Student(char* n,int sc)
{
mName = new char[strlen(n+1)];
memcpy(mName,n,strlen(n));
mName[strlen(n)] = 0;
mScore = sc;
}
Student(Student& ss)
{
mName = new char[strlen(ss.getName())+1];
memcpy(mName,ss.getName(),strlen(ss.getName()));
mName[strlen(ss.getName())] = 0;
mScore = ss.getScore();
}
char* getName(){return mName;}
int getScore(){return mScore;}
void setName(char* name)
{
if(mName)
delete[] mName;
mName = new char[strlen(name)+1];
memcpy(mName,name,strlen(name));
mName[strlen(name)] = 0;
}
void setScore(int s){mScore = s;}
void print_info()
{
cout << "name:" << mName <<",score:"<<mScore<<endl;
}
~Student()
{
if(mName)
{
delete[] mName;
mName = 0;
}
}
};
int main()
{
Student stu1("John",98);
Student stu2(stu1);
stu2.setName("Tom");
stu1.print_info();
stu2.print_info();
return 0;
}
setName函数你没定义啊