私有成员函数中对非静态成员的非法引用

时间:2011-11-28 01:14:07

标签: c++ member private-members

我正在尝试编写程序,但我无法弄清楚为什么我的私有成员函数无法访问我的私有数据成员。有人请帮忙吗?这是我的功能。 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

如果我可以提供任何其他信息,请告诉我。

2 个答案:

答案 0 :(得分:4)

您的代码会创建一个名为search的非成员函数。你需要改变:

bool search(char * symbol)

要:

bool ClassName::search(char * symbol)

ClassName替换为班级名称。

答案 1 :(得分:3)

你的功能是静态的,这就是原因。静态函数只能访问类的静态成员。

编辑:其实你必须澄清你的问题,因为其他答案也可以正确......