所以我想深拷贝我的HashTable。我的哈希表是一个填充链表的数组。 我已经编码链接列表构造函数/复制构造函数/重载操作符,他们完美地工作。深拷贝(可能与指针有关)
所以我编写了以下代码,但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'的成员变量,并且在复制构造函数中具有相同名称的***局部变量***? –
如果我将该行更改为: table = new LinkedList [ht.bucketSize]; 我得到一个错误,说,表必须是一个可修改的左值。 虽然我不想改变它。我试图创建一个新的HashTable,而不是修改现有的。 – t3hdaniel