gpt4 book ai didi

C++、 vector 、指针和对象混淆

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:20:02 25 4
gpt4 key购买 nike

我正在做一个项目,作为我大学系统编程类(class)的家庭作业。我对指针、 vector 、堆栈和堆的问题感到非常困惑。

使用 C++。我必须得到一个对象 vector ,这些对象是类(class),而这些类(class)对象有几个不同的领域。我所做的是:

vector<CoursesObject> coursevector;

然后我创建了我的类(class)对象类,其中包含类(class)中剩余的空间和类(class)字段的名称。现在我想添加一个新类(class),我这样做:

CoursesObject *theCourse = new CoursesObject(name, space);

现在我想将它添加到处理程序 vector 中:

coursevector.push_back(*theCourse);

据我所知,我在堆栈上创建了一个类(class)对象 vector ,并创建了一个指向堆上新类(class)的新指针,并将指向类(class)对象的指针 theCourse 添加到处理程序 vector 中堆。我说的对吗?

当我尝试删除那些类(class)对象时,我会:

for(int i=0; i<coursevector.size(); i++)
delete coursevector.at(i);

这给了我一个错误,它不是一个指针。但是我不是在 coursevector 中添加了指向类(class)对象的指针吗?

请有人解释一下,我必须正确处理内存,但似乎我没有做对。

最佳答案

这个

vector<CoursesObject> coursevector;

CourseObjects 的 vector ,因此它不能包含 CourseObject 指针。当您这样做时:

coursevector.push_back(*theCourse);

您将获得存储在 vector 中的 theCourse 指向的 CoursesObject 的拷贝。您不需要从 vector 中删除任何条目。事实上,你不能,因为它不保存指针。

如果你只是避免动态分配,你的程序会简单得多:

coursevector.push_back(CoursesObject(name, space));

关于C++、 vector 、指针和对象混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13210424/

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