我正在尝试使用哈希表来存储Liv-Zempel压缩的字典。我正在使用我的讲师提供给我的模板HashTable类,并使用一个名为Entry的类来存储字符串值和字典的代码,同时重载==和!=运算符以与HashTable类兼容。 / p>
但是,当我尝试使用正确的参数初始化main函数中的HashTable对象时,我得到一个关于我的构造函数的未解析的外部符号错误。
我的HashTable.h如下:
#ifndef _HASH_TABLE
#define _HASH_TABLE
#include <vector>
using namespace std;
template <class HashedObj>
class HashTable
{
public:
HashTable(){};
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 ) { }
const HashedObj & find( const HashedObj & x ) const;
void insert( const HashedObj & x );
void remove( const HashedObj & x );
const HashTable & operator=( const HashTable & rhs );
enum EntryType { ACTIVE, EMPTY, DELETED };
private:
struct HashEntry
{
HashedObj element;
EntryType info;
HashEntry( const HashedObj & e = HashedObj( ), EntryType i = EMPTY )
: element( e ), info( i ) { }
};
vector <HashEntry> array;
int currentSize;
const HashedObj ITEM_NOT_FOUND;
int nextPrime(int n);
bool isPrime(int n);
bool isActive( int currentPos ) const;
int findPos( const HashedObj & x ) const;
void rehash();
};
#endif
构造函数定义是
HashTable<HashedObj>::HashTable( const HashedObj & notFound, int size )
: ITEM_NOT_FOUND( notFound ), array( nextPrime( size ) )
{
}
由于这堂课大部分来自我的讲师,我在试图理解这个问题的根源时遇到了很大的问题。任何见解将不胜感激。谢谢!
错误消息:
main.obj:错误LNK2019:未解析的外部符号“public: __thiscall HashTable :: HashTable(类Entry const&amp;,int)“(?? 0?$ HashTable @ VEntry @@@@ QAE @ ABVEntry @@ H @ Z)引用 在函数_main 1&gt; d:\ users \ suuser \ documents \ visual studio中 2012 \ Projects \ compress-program \ Debug \ compress-program.exe:致命 错误LNK1120:1个未解析的外部
当我从main调用函数时:
HashTable<Entry> dictionary(notFound,4096);