首页 > 解决方案 > C ++,从堆中插入/删除时对象的属性消失

问题描述

您好对不起,如果这篇文章有任何问题,这是我第一次使用该网站,我有点绝望。

这是给学校的。老师为我们提供了一个现成的代码,用于一个Heap班级和一个Set班级以及其他一些东西。在我自己制作的课程中,有一个有 4 个属性:其中 3 个是long doubles,一个是std::vectors的 a Set(不是std::sets,老师提供了Sets)。

从提供的堆中插入或删除此类的对象时遇到问题。插入堆中的对象在删除时会丢失我放在std::vector.

main发生的地方的一部分(除了调试的东西)

PartialSolution temp; //this is the object
temp.includeSet(*s);
temp.Print(); //so far everything works fine
H.insert(temp);
PartialSolution l; 
l = H.top(); //written by teacher, gets first element from heap
l.Print(); //here the contents I've added with includeSet are gone

我很确定问题不可能出现在堆中,因为老师做了它,并且它使用了对象属性上的对象属性的模板,但我真的不知道问题可能出在哪里。

向量被声明为

std::vector<Set> sets;

编辑:解决了,谢谢。(对不起,如果我做错了,我不确定如何结束这个问题)。问题出在老师创建的=运算符方法中PartialSolution,该方法仅复制了long double属性并在Heap. 添加了一行来复制std::vector,现在可以正常工作了。

标签: c++oopheap

解决方案


推荐阅读