연결된 목록의 전체 복사본에 세그먼트 오류가 계속 발생합니다. Copy Contructor와 대입 연산자 (operator =)에서이 딥 카피를 사용하고 있으며 이것이 seg faulting이라는 결론에 도달했습니다.노드 포인터를 반환하는 연결된 목록의 딥 복사
bigint::Node* bigint::deepcopy(bigint::Node* target){
bigint::Node* current = target;
bigint::Node*cpy = new Node;
cpy->digit = current->digit;
Node* const hd = cpy;
current = current->next;
while(current != nullptr){
bigint::Node* tmp = new Node;
tmp->digit = current->digit;
cpy->next = tmp;
cpy = cpy->next;
current = current->next;
}
return hd;
}
내 노드 구조체 보이는 같은 : 그냥이 기능과 관련되는 개인에 무엇인지 보여주는
private:
struct Node{
int digit;
Node* next;
};
Node* head;
static Node* deepcopy(Node* target);
내 클래스가 폐쇄되고 모든. 어떤 조언을 주셔서 미리 감사드립니다.
http://stackoverflow.com/questions/21476869/constant-pointer-vs-pointer-to-constant – macroland
우선 내가 할 수있을 때마다 unique_ptr 및 포인터 대신 참조를 사용하는 것이 좋습니다. 그것은 보통 당신이 지금 최소로하고있는 것처럼 오류를 줄입니다. 또한 딥 카피는 정확히 무엇을 의미하며 그 복사본으로 무엇을 할 계획입니까? –
@ MarošBeťko "전체 복사본"은 목록에있는 모든 노드가 복사/복제된다는 의미입니다. 그래서 결국 같은 순서로 같은 값을 가진 또 다른리스트를 얻게 될 것입니다. – Thomas