C++求救(急)

来源:百度知道 编辑:UC知道 时间:2024/06/08 07:18:10
#include<iostream>
#include<string>
using namespace std;
class person
{ private:
char *name;
int id;
public:
person(char *n,int m)
{id=m;strcpy(name,n);}

void show()
{cout<<"id"<<id<<endl;
cout<<"name"<<*name<<endl;
}
};
class stud
{ private:
char *add;
int tel;
public:
stud(char *a,int t)
{strcpy(add,a);tel=t;}

void show()
{cout<<"add"<<*add<<endl;
cout<<"tel"<<tel<<endl;
}
};
class teacher:protected person
{ private:
char *degree,*del;
public:
teacher(char*d,char*de,char *n,int m):person(n,m){strcpy(degree,d);strcpy(del,de);}

void show()
{cout<<"degree"<<*degree<<endl;

楼主呀,你的所有字符串成员都是字符串指针,你还要用strcpy来赋值那肯定会报错的。在使用字符串指针前一定要给它申请内存,这个错误犯得太不应该了。你把所有用char*定义的成员全改成字符数组就好了!
像下面这些全要改:
degree[20],del[20],add[20],name[20];
我这里是随便定义了一个长度,你可以根据实际情况修改下。

1. void show()
{cout<<"old"<<old<<endl;
cout<<"sno"<<sno<<endl;
person::show(); <-这里 把void去掉,同样的还有几个
}

2. 写成int main()