struct Node
{
int value
Node* next;
}
typedef List Node*
const Set operator +(const Set& a, const Set& b)
{
Set aSet;
List newList = mergeListsCopy(a.list, b.list);
aSet.list = newList;
return aSet;
}
class Set
{
public:
//method decs
private:
List list;
};
Set::~Set()
{
list = deleteList(list);
}
Внутренние элементы этого кода работают отлично, mergeListsCopy создает новый список из двух односвязных списков и назначает указатель на список, который является частной переменной aSet.
Проблема в том, что когда возвращается aSet, aSet.list - это какой-то странный ядовитый адрес (в данном случае 0xf).
Когда я запустил его через отладчик, набор был создан в рамках перегрузки оператора, но две ссылки на этот набор также были созданы локально с использованием символа aSet, перед тем как произошел возврат, программа перешла кдеструктор, предположительно для постороннего Сета, но так как есть только один Набор, он уничтожается.
Когда я комментирую моего деструктора, эта проблема исчезает.Что я сделал не так?