2012-12-01 201 views
0

我寫了一個哈希表類和標題,但我無法在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>(); 
+0

請認真閱讀:不要用大寫的所有大寫標識符。那麼,除了宏,但不要使用宏。 –

回答

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

您已經定義了需要參數的構造函數,但是在這裏你不會傳遞參數給構造函數。相反,你正在使用一個不存在於你的類中的無參數(默認)構造函數。

請注意,如果您在類中定義了一個構造函數(它帶有參數),那麼編譯器將不會爲您生成默認構造函數。你必須自己定義它。

+0

但是當我嘗試傳遞任何參數,如:「= new HashTable (1,3)」它給出「LNK2019:無法解析的外部符號」public:__thiscall HashTable :: HashTable (int const&,int)「( ?0?$ HashTable @ H @@ QAE @ ABHH @ Z)在函數_main「引用」錯誤。 – Tugkan

+0

@Tugkan:是否有任何構造函數兩個'int'作爲參數?爲什麼你沒有看到構造函數的參數*類型*並找出構造函數可以作爲參數? – Nawaz

相關問題