2016-05-16 6 views
1

構造体nodeの配列を作成しようとしています。誰もがの配列を作成するために、クラスhashingのコンストラクタを宣言する方法を知っていますか?私のコードではNode<brace enclosed initializer list>を変換することができませんでしたというエラーです:エラーを修正する方法 "<brace enclose initilizer list>をノードに変換できませんでした"

template <typename E, size_t N=7> 
class Hashing : public Container<E> { 
    struct Node { 
     E value; 
     Node *next; 
     Node (E value) : value (value), next(nullptr) {} 
     E getValue() { return value; } 
     void putValue(E value) { this->value = value; } 
     Node *getNext() { return next; } 
    }; 

    size_t nmax; 
    size_t n; 
    Node * values; 
    Node field[N] = {}; 

public: 
    Hashing(): n(N) {}; 
+0

クラスをインスタンス化できません。どこでエラーが発生するのですか? – Klaus

答えて

3

問題は、あなたのNodeクラスが構築可能にデフォルトではないです。実行するとき

Node field[N] = { }; 

これは、配列の各要素をデフォルトで構築しようとします。あなたはユーザー定義のコンストラクターを持っているので、コンパイラーによって提供されるデフォルトのコンストラクターは抑制されます。あなたは

Node(): value(0), next(nullptr) {} 

のようなものを追加した場合、コードがコンパイルされます。

関連する問題