0

ハッシュ テーブル クラスとヘッダーを作成しましたが、メインで構築できません。「利用可能な適切なデフォルトコンストラクターがありません」と表示されます。その原因は何ですか?

私のヘッダーのコンストラクター: HashTable.h

explicit HashTable( const HashedObj & notFound, int size = 101 );
        HashTable( const HashTable & rhs )
        : ITEM_NOT_FOUND( rhs.ITEM_NOT_FOUND ),
        array( rhs.array ), currentSize( rhs.currentSize ) { }

私のcppのコンストラクター: HashTable.cpp

    HashTable<HashedObj>::HashTable( const HashedObj & notFound, int size )
    : ITEM_NOT_FOUND( notFound ), array( nextPrime( size ) )
{
    makeEmpty( );
}

そして、メインで次のコードを実行しようとしています:

HashTable <int> * hash = new HashTable<int>();
4

1 に答える 1

1
HashTable <int> * hash = new HashTable<int>();

引数を取るコンストラクターを定義しましたが、ここではコンストラクターに引数を渡していません。代わりに、クラスに存在しないパラメーターなし(デフォルト)のコンストラクターを使用しています。

クラスでコンストラクター(引数を取る)を定義した場合、コンパイラーはデフォルトのコンストラクターを生成しないことに注意してください。自分で定義する必要があります。

于 2012-12-01T13:52:44.727 に答える