首页 > 解决方案 > 将 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];

什么都不做,因为数组没有对象,而是指向对象的指针。

我究竟做错了什么?

标签: c++arrayspointersdelete-operatornullptr

解决方案


推荐阅读