我正在尝试从静态函数 Initialize() 访问非静态成员 HashTable
这就是我的代码的样子。运行此程序时出现以下错误
“未定义对 `Hash::HashTable' 的引用” 有什么方法可以访问是从 Initialize 与 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;
}