问题遇到的现象和发生背景
int num;
cout << "请输入添加职工的个数:";
cin >> num;
if (num > 0 ) {
int newSize = this->m_workernum + num; //新的人数
Worker* * newSpace = new Worker * [newSize];
if (this->m_workerArr != nullptr) {
//加入原有数据
for (int i = 0; i < this->m_workernum; i++) {
//网上的解决方法是在这里给一级指针开辟空间
newSpace[i] = this->m_workerArr[i];
}
}
for (int i = 0; i < num; i++) {
int Id;
string Name;
int deptId;
cout << "输入第" << i + 1 << "职工的编号:" ;
cin >> Id;
cout << "输入第" << i + 1 << "职工的姓名:" ;
cin >> Name;
cout << "1.员工" << endl;
cout << "2.经理" << endl;
cout << "3.老板" << endl;
cout << "请选择第" << i + 1 << "职工的岗位:" ;
cin >> deptId;
Worker* worker = nullptr;
switch (deptId) {
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_workernum + i] = worker;
}
delete[] this->m_workerArr;
cout << "成功添加了" << num << "名新职工" << endl;
}
######刚开始学c++求大佬指点newSpace[this->m_workernum + i] = worker;显示缓冲区溢出
网上查到过一个类似的,说一级指针也要开辟内存空间,但我的Worker是虚基类(抽象类),不知道怎么做