我有以下功能,我的问题是我无法删除捕获中的temp,因为它说temp是未声明但我不明白为什么?任何帮助表示赞赏。
List_Node*List::copy(const List_Node* list)
{
if(list == nullptr)
{
return nullptr;
}
else
{
try
{
List_Node* temp = new List_Node(list -> value_);
temp -> next_ = copy(list -> next_);
return temp;
}
catch (bad_alloc& )
{
delete temp;
throw;
}
}
}
答案 0 :(得分:0)
决定可以是这样的:
List_Node*List::copy(const List_Node* list)
{
if(list == nullptr)
{
return nullptr;
}
else
{
List_Node* temp = 0;
try
{
temp = new List_Node(list -> value_);
temp -> next_ = copy(list -> next_);
return temp;
}
catch (bad_alloc& )
{
delete temp;
throw;
}
}
}
或者在第一种情况下使用auto-ptr。