복사 생성자에서 전체 연결된 목록을 복사하려고 시도하지만 액세스를 계속합니다. 복사 구성이 제대로 작동하지 않는 이유는 무엇입니까? 오류 : 주요복사 생성자가 연결된 목록을 통과합니다. 구현
NodeSLList list2 (list1);
cout << "cout << list2 " << endl;
cout << list2 << endl;
경찰 생성자가 제대로 연결리스트를 복사하지 않았기 때문에 오류가 cout << list2 << endl;
발생에
Unhandled exception at 0x00AE506C in program.exe: 0xC0000005: Access violation reading location 0x00000004.
복사 생성자
NodeSLList::NodeSLList(NodeSLList & list)
{
head = list.head;
IntNode *tmp = head;
cout << "copy constructor called" << endl;
int size;
size = list.GetSize();
for (int i = 1; i <= size; i++)
{
tmp->data= list.RetrieveNode(i).data;
tmp->next = list.RetrieveNode(i).next;
tmp = tmp->next;
}
}
.
head = list.head;
IntNode *tmp = head;
당신은 포인터 값을 복사하지한다 :
'1'에서 루프를 시작해야하는 이유가 있습니까? C++에서 첫 번째 요소는 (일반적으로) '0'입니다. 또한, 노드의 뒤쪽에 노드를 추가하는 함수가 있습니까? 그렇다면 복사 생성자는 코딩 한 것보다 훨씬 간단합니다. – PaulMcKenzie
연결된 목록을 설정하는 방법은 1에서 N입니다. –
내 의견이 업데이트되었습니다. 목록의 뒤쪽에 추가하는 함수가 있으면 복사 생성자에서 사용합니다. 0 대신 1에서 카운트를 시작하는 것과 관련하여, 1에서 시작하는 많은 시간이 off-by-1 버그의 원인입니다. – PaulMcKenzie