我正在尝试编写程序,但我无法弄清楚为什么我的私有成员函数无法访问我的私有数据成员。有人请帮忙吗?这是我的功能。 nStocks,capacity和slots []都是私有数据成员,hashStr()是私有函数。
bool search(char * symbol)
{
if (nStocks == 0)
return false;
int chain = 1;
bool found = false;
unsigned int index = hashStr(symbol) % capacity;
if (strcmp(symbol, slots[index].slotStock.symbol) != 0)
{
int start = index;
index ++;
index = index % capacity;
while (!found && start != index)
{
if(symbol == slots[index].slotStock.symbol)
{
found = true;
}
else
{
index = index % capacity;
index++;
chain++;
}
}
if (start == index)
return false;
}
return true;
}
以下是我的.h文件的私人成员部分:
private:
static unsigned int hashStr(char const * const symbol); // hashing function
bool search(char * symbol);
struct Slot
{
bool occupied;
Stock slotStock;
};
Slot *slots; // array of instances of slot
int capacity; // number of slots in array
int nStocks; // current number of stocks stored in hash table
如果我可以提供任何其他信息,请告诉我。
答案 0 :(得分:4)
您的代码会创建一个名为search
的非成员函数。你需要改变:
bool search(char * symbol)
要:
bool ClassName::search(char * symbol)
将ClassName
替换为班级名称。
答案 1 :(得分:3)
你的功能是静态的,这就是原因。静态函数只能访问类的静态成员。
编辑:其实你必须澄清你的问题,因为其他答案也可以正确......