黑马职工管理系统C++

I need you help
B站黑马程序员的职工管理系统
teacher让自己写关于添加职工编号重复的解决方案
下面是我的思路
1.用while死循环调用IsExist函数
2.把for外面的放进里面,每添加一次就更新一次

请指出我的问题
请问在我的代码基础上能完善吗,多谢回答

有一个警告

img


160行:newSpace[this->m_EmpNum + i] = worker;

这是运行过程

img


img


img


img

打开文件如下

img

//添加职工
void WorkerManager::Add_Emp()
{
    cout << "请输入添加职工数量:" << endl;
    int addNum = 0; //保存用户的输入数量
    cin >> addNum;

    if (addNum > 0)
    {
        //添加
        //计算添加新空间大小
        int newSize = this->m_EmpNum + addNum; //新空间人数=原来记录人数+新增人数

        //开辟新空间
        Worker** newSpace = new Worker * [newSize];

        //将原来空间下数据,拷贝到新空间下
        if (this->m_EmpArray != NULL)
        {
            for (int i = 0; i < m_EmpNum; i++)
            {
                newSpace[i] = this->m_EmpArray[i];
            }
        }

        //批量添加新数据
        for (int i = 0; i < addNum; i++)
        {
            int id;            //职工编号
            string name;    //职工姓名
            int dSelect;    //部门选择

            cout << "请输入第 "<< i+1 <<" 个新职工编号: " << endl;
            while (1)
            {
                cin >> id;
                if (IsExist(id) == -1)
                {
                    break;
                }
                else
                {
                    cout << "编号重复输入,请重试" << endl;
                }
            }
            
            

            cout << "请输入第 " << i + 1 << " 个新职工姓名: " << endl;
            cin >> name;

            cout << "请选择该职工岗位:" << endl;
            cout << "1.普通员工" << endl;
            cout << "2.经理" << endl;
            cout << "3.老板" << endl;
            cin >> dSelect;

            Worker* worker = NULL;
            switch (dSelect)
            {
            case 1:
                worker = new Employee(id, name, 1);
                break;
            case 2:
                worker = new Manager(id, name, 2);
                break;
            case 3:
                worker = new Boss(id, name, 3);
                break;
            default:
                break;
            }

            //将创建职工指针,保存到数组中
            newSpace[this->m_EmpNum + i] = worker;

            //释放原有空间
            delete[] this->m_EmpArray;

            //更改新空间的指向
            this->m_EmpArray = newSpace;

            //更新新的职工人数
            this->m_EmpNum++;

            //更新职工不为空标志
            this->m_FileIsEmpty = false;

            //保存数据到文件中
            this->save();
        }

        //提示添加成功
        cout << "成功添加 " << addNum << " 名新职工" << endl;
    }
    else
    {
        cout << "输入数据有误" << endl;
    }

    //按任意键后 清屏回到上级目录
    system("pause");
    system("cls");
}