0x0041C580 处(位于 基于多态的职工管理系统.exe 中)引发的异常: 0xC0000005: 读取位置 0x00000024 时发生访问冲突。的解决方案

我是看着黑马程序员的视频中制作员工管理系统写出的代码,在中间出现的一些问题。

其实这是我个人的疏忽,出现的问题和解决办法如下:

出现的问题:代码问题

void workManager::addEmp()
{
    cout << "请输入添加的员工的数量" << endl;
    int addNum;
    cin >> addNum;
    if (addNum>0)
    {
        //计算现在的人数
        int newSize = addNum + this->m_num;
        //动态数组存储,储存了多个指向worker类型变量的指针
        worker* *newSpace= new worker * [newSize];//开辟对象数组的方法
        //将原来的所有职工拷贝到新数组下
        if (this->m_empArray != NULL)
        {
            for (int i = 0; i < this->m_num; i++)
            {
                newSpace[i] = m_empArray[i];
            }
        }
        for (int i = 0; i < addNum; i++)
        {
            int id;
            string name;
            int dept;
            cout << "请输入第" << i + 1 << "个员工的编号(纯数字编号)" << endl;
            cin >> id;
            cout << "请输入第" << i + 1 << "个员工的姓名" << endl;
            cin >> name;
            cout << "请输入第" << i + 1 << "个员工的部门(职责)" << endl;
            cout << "1、普通员工" << endl;
            cout << "2、经理" << endl;
            cout << "3、老板" << endl;
            cin >> dept;
            worker* work = NULL;
            switch (dept)
            {
            case 1:
                employee(id, name, dept);//在这里,我忘记更改work指针的指向了,后面三个同理
                break;
            case 2:
                manager(id, name, dept);
                break;
            case 3:
                boss(id, name, dept);
                break;
            default:
                cout << "部门职责选择无效" << endl;
                break;
            }
            //将指针拷贝到指针数组中来
            newSpace[this->m_num + i] = work;
        }
        //释放原有空间
        delete this->m_empArray;
        //创建新空间
        this->m_empArray = newSpace;
        //更新人数
        this->m_num = newSize;

        this->fileIsEmpty = false;
        //this->save();
        //提示
        cout << "成功添加" << addNum << "个新职工" << endl;
        system("pause");
        system("cls");
    }
    else
    {

    }
}

解决办法如下:

 case 1:
               work=new employee(id, name, dept);//在堆区开辟内存空间存储数据即可
                break;

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值