「テーブル」と呼ばれる構造体へのポインターの配列があります (構造体はノードと呼ばれます)。
クラスで配列を次のように宣言します。
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;
};
私が行っている調査は、エラーが何であるかを教えてくれません。どんな助けでも大歓迎です!