gpt4 book ai didi

C++ 简单指针错误无法弄清楚为什么?

转载 作者:行者123 更新时间:2023-11-30 02:50:49 25 4
gpt4 key购买 nike

我正在尝试设计一个 StudentReviewSystem,它只包含类(class)、学生等。现在,我正在尝试向类(class)数组添加一个类(class)对象。因为,我是动态地做的;当我插入一门新类(class)时,我将旧类(class)复制到新数组并插入新类(class)。但是,当我删除旧数组时,它会给我无效指针错误。我不知道为什么?感谢您的帮助。

void StudentReviewSystem::addCourse(int courseId, string courseName) {
//increment number of courses
setNumCourses(numCourses + 1);
Course* newCourses = new Course[numCourses];

if (courses != NULL) {
// copy courses to new one
for (int i = 0; i < numCourses - 1; i++) {
newCourses[i].setCourseId(courses[i].getCourseId());
newCourses[i].setCourseName(courses[i].getCourseName());
}

// delete old courses
delete courses;
}

newCourses[numCourses - 1].setCourseId(courseId);
newCourses[numCourses - 1].setCourseName(courseName);
courses = newCourses;
}

这是类(class)类。

#include "Course.h"
Course::Course() {
}

Course::~Course() {
}

int Course::getCourseId() const {
return courseId;
}

void Course::setCourseId(int courseId2) {
courseId = courseId2;
}

string Course::getCourseName() const {
return courseName;
}

void Course::setCourseName(string courseName2) {
courseName = string(courseName2);
}

这是主要的。

int main() {
StudentReviewSystem srs;

srs.addCourse(111, "foo");

srs.addCourse(222, "foo");

srs.addCourse(333, "foo");

srs.addCourse(444, "foo");

return 0;
}

最佳答案

我想你忘记了什么:delete [] courses; 实际上删除了数组 - 你只是删除了指针。

关于C++ 简单指针错误无法弄清楚为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20121653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com