Доступ к переменным статического classа в C ++?

Дубликат:
C ++: неопределенная ссылка на статический член classа

Если у меня есть class / структура, подобный этому

// header file class Foo { public: static int bar; int baz; int adder(); }; // implementation int Foo::adder() { return baz + bar; } 

Это не работает. Я получаю «неопределенную ссылку на ошибку« Foo :: bar ». Как получить доступ к переменным статического classа в C ++?

Вы должны добавить следующую строку в файл реализации :

 int Foo::bar = you_initial_value_here; 

Это необходимо, поэтому компилятор имеет место для статической переменной.

Это правильный синтаксис, однако Foo::bar должен быть определен отдельно, вне заголовка. В одном из ваших .cpp файлов скажите следующее:

 int Foo::bar = 0; // or whatever value you want 

Вам нужно добавить строку:

 int Foo::bar; 

Это определит вам хранилище. Определение static в classе похоже на «extern» – оно предоставляет символ, но не создает его. т.е.

foo.h

 class Foo { static int bar; int adder(); }; 

foo.cpp

 int Foo::bar=0; int Foo::adder() { ... } 

для использования статической переменной в classе, сначала вы должны указать значение (не локали) для вашей статической переменной (инициализировать), после чего вы можете получить доступ к статическому члену в classе:

 class Foo { public: static int bar; int baz; int adder(); }; int Foo::bar = 0; // implementation int Foo::adder() { return baz + bar; } 
  • Безопасны ли streamи статических методов
  • Почему основной метод Java статический?
  • ASP.NET Singleton
  • Как использовать функцию C # 6 «Использование статического»?
  • Почему статический член данных должен быть определен вне classа?
  • Пожизненная статическая переменная ASP.NET
  • Почему мой ArrayList содержит N копий последнего элемента, добавленного в список?
  • Ошибка Java: не удается сделать статическую ссылку на нестатический метод
  • Объявления переменных в файлах заголовков - статические или нет?
  • Почему мы не можем использовать это ключевое слово в статическом методе
  • Объединение статических библиотек
  • Давайте будем гением компьютера.