我試圖訪問Hashtable將是一個靜態函數初始化()訪問從靜態函數
這是我的代碼看起來像一個非靜態成員的非靜態結構。 我收到以下錯誤,當我運行這個
「未定義參考`哈希::哈希表'」 有什麼辦法,我可以訪問來自初始化與哈希表中的定義相同。
class Hash
{
private:
static const int tableSize = 10;
struct item
{
string name;
item* next;
};
static item* HashTable[tableSize];
public:
static void Initialize();
static int Hash(string key);
};
----------------------------------------------------------------------------
--------------------------------hash.cpp------------------------------------
#include<iostream>
#include<string>
#include "hash.hpp"
using namespace std;
hash::Initialize()
{
for(int i=0;i<tableSize;i++)
{
HashTable[i] = new item; //Gives an error
HashTable[i]->name = "empty";//Gives an error
HashTable[i]->next = NULL;
}
}
int hash::Hash(string key)
{
int hash=0;
int index=0;
for(int i=0;i<key.length();i++)
{
hash = (hash + (int)key[i]);
}
index = hash % tableSize;
cout<<"Index-"<<index<<endl;
return index;
}
int main(int argc,char** argv)
{
Hash:Initialize();
Hash::PrintTable();
return 0;
}
查找一個定義規則是什麼。靜態成員需要在一個翻譯單元中實例化。簡單地包括頭文件是聲明,而不是實例化。 – yngccc