我有一个指向名为“表”的结构的指针数组(该结构称为节点)。
我在类中声明数组:
Node * table;
然后,在另一种方法中,我初始化表:
this->table = new Node [this->length];
一切正常。this->length 是一个有效的条目,this->table 指向正确的数组,等等。但是,然后我尝试更改元素的值:
for(int i = 0; i < this->length; i++) {
this->table[i] = new Node;
}
甚至
for(int i = 0; i < this->length; i++) {
this->table[i] = 0;
}
一切都开始出现问题。为什么我不能将这些指针设置为任何东西?
这是我得到的错误:
(其中第 15 行是“this->table[i] = new Node;”的行)。
我讨厌发布长段代码,所以这里是代码本身的缩短版本:
template <class T, class S>
class HashMap {
public:
HashMap();
private:
struct Node;
Node * table;
static const unsigned length = 100;
};
template <class T, class S>
HashMap<T, S>::HashMap() {
this->table = new Node [HashMap::length];
for(int i = 0; i < HashMap::length; i++) {
this->table[i] = new Node;
}
}
template <class T, class S>
struct HashMap<T, S>::Node {
T value;
S key;
Node * next;
};
我正在做的任何研究都没有告诉我错误是什么;任何帮助表示赞赏!