그래서 해시 테이블을 딥 복사하려고합니다. 내 해시 테이블은 연결된 목록으로 채워진 배열입니다. 링크 된 목록 생성자/복사 생성자/재정의 연산자를 이미 코딩했으며 완벽하게 작동합니다.딥 복사 (아마도 포인터 관련)
그래서 다음 코드를 코딩했지만 for 루프에 문제가 있습니다. 호출 된() 중단 :
HashTable.cpp
HashTable::HashTable()
{
}
HashTable::HashTable(const HashTable & ht)
{
bucketSize = ht.bucketSize;
count = ht.count;
LinkedList** table = new LinkedList*[ht.bucketSize];
for (int i = 0; i < bucketSize; i++) {
table[i] = new LinkedList(ht.table[i]);
}
}
HashTable.h
class HashTable {
public:
HashTable();
HashTable(const HashTable& ht);
private:
// Add your member variables and any private member functions here
int bucketSize = defaultCapacity; //default is 101
int count = 0;
LinkedList table[defaultCapacity];
}
나는 그러나 내가 실행 누를 때 오류 메시지 만 팝업이 없다, 그것은 포인터를 함께 할 수있는 뭔가가 생각한다.
만들 [최소, 완전하고, 검증 가능한 예] (http://stackoverflow.com/help/mcve) 우리를 게재하도록 노력하십시오. –
또한, 'table'이라는 이름의 멤버 변수와 동일한 이름을 가진 copy-constructor의 *** 로컬 변수 ***을 가진 것이 문제가 될 것이라고 생각하지 않습니까? –
그 행을 다음과 같이 변경하면 : table = new LinkedList [ht.bucketSize]; 테이블이 수정 가능한 좌변 치 여야한다는 오류가 나타납니다. 나는 그것을 바꾸려고 노력하지 않을 것이다. 새 HashTable을 만들고 기존의 HashTable을 수정하려고합니다. – t3hdaniel