用户在批量创建时,可能会创建不同种类的职工
如果想这样所有不同种类的员工都放入到一个数组种,可以将所有员工的指针维护到一个数组内,
如果想在程序中维护这个不定长度的数组,可以将数组创建到堆区,并lion给worker**的指针维护
workermanager.cpp
//记录职工人数 int m_EmpNum; //职工数组指针 worker ** m_EmpArray; //添加职工函数 void Add_Emp();
在构造函数中实现函数
//增加员工信息 void workManager::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 < this->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; cin >> id; 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 Boos(id, name, 3); break; default: break; } //将创建职工职责,保持到数组中 newSpace[this->m_EmpNum + i] = worker; } //释放原有的空间 delete[]this->m_EmpArray; //更改新空间的指向 this->m_EmpArray = newSpace; //更新新员工人数 this->m_EmpNum = newSize; //提示添加成功 cout << "成功添加" << addNum << "名职工~~" << endl; system("pause"); system("cls"); } else { cout << "输入数据有误~" << endl; } }