Неопределенная ссылка на статический член класса - PullRequest
2 голосов
/ 05 декабря 2011

Я работаю над домашним заданием , и у меня почти все сделано, за исключением этого отвратительного статического значения, которое наш профессор хочет использовать: value

Заголовочный файл содержит:

private:
    static int value;

И у нас должна быть функция для вычисления значения, вот так:

static void calculate()
{
    long a = 1L;
    int count = 0;

    while( a != 0 )
    {
        a = a << 1;
        count++;
    }

    value = count;
}

Это, по сути, вычисление количества битов в длинной с использованием сдвига битов.

Однако я получаю сообщение об ошибке "неопределенная ссылка на` Class1 :: value '

Я провел последние полтора часа, выясняя это, и это убивает меня. Любая помощь была бы великолепна, все поиски закончились мертвым.

Спасибо!


Обновление:

Я включил

int Class1::value = 0;

Однако теперь я получаю сообщение об ошибке «error: int Class1 :: value является приватным

Ответы [ 2 ]

4 голосов
/ 05 декабря 2011

В вашем * .cpp файле добавьте

int ClassName::value = 0;

Это выделит хранилище для value.

Куска кода, который вы фактически имеете в объявлении класса, просто объявляет эту переменную (сообщает компилятору, что такая переменная существует).Однако каждая переменная должна быть объявлена ​​и определена .Определение определит, что хранилище выделено для этой переменной, и создаст символ, который ваш компилятор не смог найти раньше.

0 голосов
/ 05 декабря 2011

Вам необходимо определить статический элемент данных в (.cpp) исходном файле со следующим синтаксисом:

datatype Your_ClassName::variable;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...