VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 456|回复: 1

关于类的题目,b引发了未经处理的异常:读取访问权限冲突。 **_Str** 是 0x11101110...

[复制链接]
82_avatar_middle
最佳答案
0 
在线会员 发表于 2022-7-1 16:25:45 | 显示全部楼层 |阅读模式
本帖最后由 meguro 于 2022-7-1 16:28 编辑

设计一个学生类(CStudent),它具有的私有数据成员是:注册号、姓名、数学、外语、 计算机课程的成绩。

具有的公有成员函数是:求三门课总成绩的函数 sum;求三门课平均成绩的函数 average;显示学生数据信息的函数display;设置学生数据信息的函数 setData。

然后通过主函数,从键盘对学生对象的数组(全班学生信息)进行输入,而后求出每一学生 的总成绩、平均成绩,并显示全班学生总成绩最高者那一同学的全部数据信息。
不知道为什么报错,哪里出了问题T-T,希望有大佬可以帮忙看看
  1. class CStudent {
  2.         unsigned long reg_num;//数据成员:注册号
  3.         char* name;         //数据成员:姓名  
  4.         float math, eng, comp;  //数据成员:数学、英语、计算机成绩
  5. public:
  6.         CStudent(unsigned long r, char* n, float m, float e, float c);
  7.         CStudent() {};
  8.         float sum(); //求三门课总成绩的函数 sum
  9.         float average(); //求三门课平均成绩的函数 average
  10.         void display();          //显示学生数据信息的函数 display   
  11.         void setData(unsigned long r, char* n, float m, float e, float c);        //设置学生数据信息的函数 setData

  12. };

  13. int main()
  14. {
  15.         CStudent stud[50];
  16.         int n, i;
  17.         cin >> n;

  18.         for (i = 0; i < n; ++i)
  19.         {
  20.                 stud[i].setData(1, "sample", 123, 124, 125);
  21.         }

  22.         for (i = 0; i < n; ++i)
  23.         {
  24.                 stud[i].display();
  25.         }
  26.         int maxj = 0;
  27.         float max = 0;
  28.         for (i = 0; i < n; ++i)
  29.         {
  30.                 if (stud[i].average() > max)
  31.                 {
  32.                         max = stud[i].average();
  33.                         maxj = i;
  34.                 }
  35.         }
  36.         stud[maxj].display();
  37.         return 0;
  38. }

  39. CStudent::CStudent(unsigned long r, char* n, float m, float e, float c)
  40. {
  41.         reg_num = r;
  42.         size_t n_len;
  43.         n_len = strlen(n) + 1;
  44.         name = new char[n_len + 1];
  45.         memset(name, 0, n_len);
  46.         strcpy_s(name, n_len, n);
  47.         math = m;
  48.         e = eng;
  49.         c = comp;

  50. }

  51. float CStudent::sum()
  52. {
  53.         return (math + eng + comp);
  54. }

  55. float CStudent::average()
  56. {
  57.         return (math + eng + comp) / 3;
  58. }
  59. void CStudent::setData(unsigned long r, char* n, float m, float e, float c)
  60. {
  61.         cout << "请输入学生信息" << endl;
  62.         cin >> r;
  63.         cin >> name;
  64.         cin >> m;
  65.         cin >> e;
  66.         cin >> c;
  67.         reg_num = r;
  68.         size_t n_len;
  69.         n_len = strlen(n) + 1;
  70.         name = new char[n_len + 1];
  71.         memset(name, 0, n_len);
  72.         strcpy_s(name, n_len, n);
  73.         math = m;
  74.         eng = e;
  75.         comp = c;
  76. }
  77. void CStudent::display()
  78. {
  79.         cout << this->reg_num << this->sum() << this->average() << endl;

  80. }
复制代码


报错的内容

报错的内容




上一篇:查资料的时候找到了这个消息,请问怎么响应啊,萌新一只~
下一篇:站长教程代码求助
65_avatar_middle
最佳答案
0 
在线会员 发表于 2022-7-17 23:50:22 | 显示全部楼层
      n_len = strlen(n) + 1;
        name = new char[n_len + 1];
        memset(name, 0, n_len);
        strcpy_s(name, n_len, n);
改成
     n_len = strlen(n) + 1;
        name = new char[n_len ];
        memset(name, 0, n_len);
        strcpy_s(name, n_len, n);

n_len已经把接入的参数长度加1了
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2022-11-30 22:09

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表