Статические объекты в C ++ с Visual Studio - PullRequest
0 голосов
/ 16 февраля 2011

Я работаю над проектом, в котором статический объект объявлен в одном из заголовочных файлов (скажем, A.h). Я включаю A.h в другой заголовочный файл и могу получить доступ к объекту, его функциям и данным, как если бы это был один и тот же объект. Проблема начинается, когда я включаю A.h в B.cpp и пытаюсь использовать тот же объект. Объект существует нормально, но это не тот же объект, то есть все члены, которым было задано какое-то другое значение, теперь равны 0. Я что-то здесь упускаю?

Пример кода:

хиджры

class foo {
  int result;
  // variables and methods
} static foo_obj;

B.h

#include "A.h"
// Do other things
foo_obj.manipulate_result(); // Uses methods of objects within B.h
// Do other things
foo_obj.showResult(); // This gives me a non-zero value

a.cpp

#include "A.h"
// Do other things
foo_obj.showResult();
// This outputs zero if called here even though
// foo_obj should be  in the same state as in B.h

1 Ответ

3 голосов
/ 16 февраля 2011

Инициализируйте статическую переменную в вашем файле реализации для A.h - например, A.cpp. Также пометьте переменную как extern.

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