c++写入访问权限冲突是怎么了?

shenhuazhong 2017-03-23 04:44:17
我想写一个关于学生信息的程序,封闭一个学生类,可是当我运行的时候,刚一录入学生姓名,按了回车后就程序已停止运行,调试 的时候与写入访问权限冲突了。这是怎么回事,研究了好几天,毫无头绪。。。我用的是vs2015
#include<iostream>
using namespace std;
class Cstudent
{
private:
char *name;
char *num;
int age;
int score[5];
static int b;
public:
Cstudent()
{
char a[20];
char b[12];
name=a;
num=b;
name = "XXX";
num = "XX";
age = 20;score[1] = 60;score[2] = 60;score[3] = 60;score[4] = 60;
cout << "Constructed!" << '\n';
}
~Cstudent()
{
delete name;
delete num;
}
void pri()
{
cout << ':' << name << ' ' << num << ' ' << age << ' ';
for (int i = 0;i<5;i++) cout << score[i] << ' ';
cout << '\n';
}
void sca()
{
cin >> name >> num >> age;
for (int i = 0;i<5;i++) cin >> score[i];
}
int warning()
{
int a = 0;
for (int i = 0;i<5;i++)
if (score[i]<60) a++;
if (a >= 3)
{
cout << "warning";
b++;
return 1;
}
}
static int inspect()
{
if (b == 0)
return 1;
else return 0;
}
};
int Cstudent::b = 0;
int main()
{
int n, i;
cin >> n;
Cstudent * Class = new Cstudent[n];;
for (i = 0;i<n;i++)
{
Class[i].sca();
cout << '\n';
}
for (i = 0;i<n;i++)
{
if (Class[i].warning() == 1) Class[i].pri();
}
if (Cstudent::inspect() == 1) cout << "Good";
delete Class;
return 0;
}
...全文
1537 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
幻夢之葉 2017-03-23
  • 打赏
  • 举报
回复
修改了下,你测试测试

#include<iostream>
using namespace std;
class Cstudent
{
private:
    //char *name;
    //char *num;
    char name[20];
    char num[12];
    int age;
    int score[5];
    static int b;
public:
    Cstudent()
    {
        /*char a[20];
        char b[12];
        name = a;
        num = b;
        name = "XXX";
        num = "XX";*/
        strcpy(name, "XXX");
        strcpy(num, "001");
        age = 20; score[1] = 60; score[2] = 60; score[3] = 60; score[4] = 60;
        cout << "Constructed!" << '\n';
    }
    ~Cstudent()
    {
        //delete name;
        //delete num;
    }
    void pri()
    {
        cout << ':' << name << ' ' << num << ' ' << age << ' ';
        for (int i = 0; i < 5; i++) cout << score[i] << ' ';
        cout << '\n';
    }
    void sca()
    {
        cin >> name >> num >> age;
        for (int i = 0; i < 5; i++) cin >> score[i];
    }
    int warning()
    {
        int a = 0;
        for (int i = 0; i < 5; i++)
            if (score[i] < 60) a++;
        if (a >= 3)
        {
            cout << "warning";
            b++;
            return 1;
        }

        return 0;
    }
    static int inspect()
    {
        if (b == 0)
            return 1;
        else return 0;
    }
};
int Cstudent::b = 0;
int main()
{
    int n, i;
    cin >> n;
    Cstudent *	Class = new Cstudent[n];
    for (i = 0; i < n; i++)
    {
        Class[i].sca();
        cout << '\n';
    }
    for (i = 0; i < n; i++)
    {
        if (Class[i].warning() == 1) Class[i].pri();
    }
    if (Cstudent::inspect() == 1) cout << "Good";
    //delete Class;
    delete []Class;
    return 0;
}
懒懒的吉他手 2017-03-23
  • 打赏
  • 举报
回复
设置断点一步步跟踪吧,你这个结构体写的我看不懂
幻夢之葉 2017-03-23
  • 打赏
  • 举报
回复
private: char *name; char *num; int age; int score[5]; static int b; public: Cstudent() { char a[20]; char b[12]; name = a; //指向局部变量的内存 num = b; name = "XXX"; num = "XX"; age = 20; score[1] = 60; score[2] = 60; score[3] = 60; score[4] = 60; cout << "Constructed!" << '\n'; } ~Cstudent() { delete name; //删除栈的内存,只有new出来的才需要delete delete num; } 基础太差,多去看看书本例子或者网上的例子 如果你觉得char*比较难以维护,你把他们改为string吧,这个不容易出现这些错误
gzshun 2017-03-23
  • 打赏
  • 举报
回复
vs最方便了,F5调试,崩溃时查看堆栈信息,分析变量内存情况

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧