创建构造函数时没有适当的默认构造函数

时间:2012-12-01 13:50:03

标签: c++ visual-studio-2010 constructor

我写了一个哈希表类和标题,但我不能在main上构建它。它给出“没有适当的默认构造函数”。造成这种情况的原因是什么?

标题中的构造函数: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>();

1 个答案:

答案 0 :(得分:1)

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

你已经定义了一个带参数的构造函数,但是这里你没有将参数传递给构造函数。相反,你正在使用一个在你的类中不存在的无参数(默认)构造函数。

请注意,如果您在类中定义了一个构造函数(它接受了参数),那么编译器将不会为您生成默认构造函数。你自己定义它。