【发布时间】:2015-06-17 12:28:44
【问题描述】:
我正在尝试将派生对象添加到基指针数组中。
我的班级定义如下(因为这是一个不能更改的作业):
Base** bases;
现在我正在使用一个基指针数组:
Base** bases=new Base*[2];
然后像这样添加元素:
bases[0]=new Derived1;
bases[1]=new Derived2;
如果不是因为我似乎无法追踪的内存泄漏,这很好用。我读到我可以将向量用于类似目的,并具有更好的内存管理。
我试过了:
vector<Base*>basesV;
basesV.push_back(new Derived1);
basesV.push_back(new Derived2);
它似乎有效,但我如何将向量 basesV '附加'到我的类 Base** 基础中?
简单的bases=basesV;似乎不起作用。我是否被困在使用基指针数组?
我还有一个接受 Base** 的函数,删除上面的向量似乎也不起作用。
感谢您的帮助。
【问题讨论】:
-
如果这是一项任务,那么通过挂钩向量来解决整个事情似乎不太可能是可以接受的。对于分配的约束,这是一个“聪明的草皮”解决方法。如果我们能看到您如何释放资源会更好,以便我们可以帮助您解决内存泄漏问题,但您没有提交testcase。
-
虽然我很欣赏你认识到,在现实世界中,矢量会使 far 更有意义。不过,在现实世界中,尽量不要存储原始指针。
-
是的,我正在向教授发送电子邮件。实际的任务是,您必须使用提供的头文件。我们得到的只是一段关于程序应该做什么、头文件和正在运行的程序的打印输出。向量仍然给我泄漏,它不像我想象的那样自动化......(请参阅我对下面答案的回复)。
-
嗯,你正在存储指针。那些指针被清理了。但是你仍然需要清理指针。通常,正如我所说,您不想存储原始指针。
-
你还没有告诉我们你
delete所有这些对象在哪里......?
标签: c++ arrays pointers vector