c++ 编译通过了 但是仍然不能执行

#include<iostream>#include<cstring>usingnamespacestd;classCEmployee{protected:char*Na... #include <iostream>
#include <cstring>
using namespace std;
class CEmployee
{
protected:
char*Name;
int Salary;
public:
virtual int salary()=0;
};
class CManager:public CEmployee
{
private:
int Week;
public:
CManager(char*name,int week)
{
Week=week;
strcpy(Name,name);
}
int salary()
{
Salary=Week*2000;
return Salary;
}
};
void main()
{
int week;
char*name;
cout<<"please input name"<<endl;
cin>>name;
cout<<"please input week"<<endl;
cin>>week;
CManager manager(name,week);
CManager *pm;
pm=&manager;
cout<<"salary is"<<pm->salary()<<endl;
}
编译通过了 但是仍然不能执行 麻烦您了
展开
 我来答
百度网友6fe74e2
2013-03-23 · TA获得超过6592个赞
知道大有可为答主
回答量:1973
采纳率:100%
帮助的人:256万
展开全部
有两个地方需要修改:
1.
class CEmployee
{
protected:
char Name[30];//这儿不能只是一个指针,*Name你没给分配空间,又怎么能存字符串进去。
int Salary;
public:
virtual int salary()=0;
};
2.
一样的道理:
main函数中的
char *name;
cin>>name;
一样要改成:
char name[30];
cin>>name;
或者用malloc动态分配内存。
andsom
2013-03-23 · TA获得超过753个赞
知道小有建树答主
回答量:313
采纳率:0%
帮助的人:120万
展开全部
char*name;
cout<<"please input name"<<endl;
cin>>name;
错误是你的 name 指针没有分配空间。在这个应用中,你可以不用指针有数据就可以。将定义修改为:
char name[80]; // 输入不超过 80 个字符。
如果你一定要用指针,代码如下:
name = (char *) malloc( 80 );
cin >> name;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式