Недопустимая ссылка на нестатический член в функции закрытого члена - PullRequest
1 голос
/ 28 ноября 2011

Я пытаюсь написать программу, но не могу понять, почему моя частная функция-член не может получить доступ к моим личным данным-членам. Кто-нибудь, пожалуйста, помогите? Вот моя функция. nStocks, емкость и слоты [] являются частными членами данных, а 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 ]

4 голосов
/ 28 ноября 2011

Ваш код создает функцию, не являющуюся членом, которая называется search.Вам необходимо изменить:

bool search(char * symbol)

На:

bool ClassName::search(char * symbol)

Заменить ClassName на имя класса.

3 голосов
/ 28 ноября 2011

Вы работаете статично, вот почему.Статические функции могут иметь доступ только к статическим членам класса.

РЕДАКТИРОВАТЬ: На самом деле вы должны уточнить свой вопрос, так как другой ответ также может быть правильным ...

...