c++ - 将 Array 中的一个元素设置为 nullptr
问题描述
一个学校项目的 C++ 新手,我似乎无法通过我项目的最后一部分。
我有一个类“名册”,它有一个对象指针数组
Student* classRoster[MAX_ROSTER] = {};
这些 "Student" 对象已使用 Roster 方法动态添加到数组中,该方法执行以下操作:
classRoster[arrayLength++] = new Student(...);
在哪里
#define MAX_STUDENTS 5
int arrayLength = 0;
目标是从数组中删除特定学生,但保留其他学生。该函数看起来像这样:
for (int i = 0; i < MAX_STUDENTS; i++) {
if (classRoster[i]->getID() == studentID) {}
}
现在在这个函数中我尝试了许多不同的东西,删除内存并将指针设置为空,尝试删除内存并重新排列数组,但似乎没有任何效果。
我发现这个问题有一个公认的答案:Set array of object to null in C++,但这对我不起作用,我不知道为什么。
我在循环之前在函数中设置了一个 bool 和位置 int 并尝试在识别后删除学生,在循环中删除等。
我认为这是正确的:
delete[] classRoster[i];
classRoster[i] = nullptr;
(我是匹配的学生)但这会删除数组中所有元素的内存,如果我只是尝试
classRoster[i] = nullptr;
这使得“i”之后的所有元素也为nullptr。
delete* classRoster[i];
给出一个错误,我们无法删除类型“学生”
和
delete classRoster[i];
什么都不做,因为数组没有对象,而是指向对象的指针。
我究竟做错了什么?
解决方案
推荐阅读
- javascript - 仅显示一次预加载器 jquery
- asp.net - 异常 - 无法获取转换结果标头。数据传输错误。数据传输错误 109
- ios - SwiftUI 移动修改器不适用于 iPhone 和 iPad iOS 15 模拟器
- nginx - 无法与 NGINX 建立 WSS(安全 Websocket)连接
- javascript - 为什么 RxJS 主题被设计为“打破”错误?
- odoo - 如何在报告正文中打印页码,既不在页眉也不在页脚odoo中?
- if-statement - 不和谐.py | 如果语句不能正常工作
- android - 我使用 react native 为 android 创建了一个 WhatsApp 贴纸应用程序,需要我的工作库或其他方式来共享包
- msbuild - Gitlab 管道无法为 UWP 项目运行 msbuild,但在本地运行良好
- c++ - to_string() 没有给出预期的结果