使用Visual Studio的C ++中的静态对象

Static Objects in C++ with Visual Studio

我正在开发一个项目,其中一个头文件(比如A.h)中声明了一个静态对象。 我将A.h包含在另一个头文件中,我可以访问该对象及其功能和数据,就好像它是同一个对象一样。 当我将A.h包含在B.cpp中并尝试使用相同的对象时,问题就出现了。 该对象存在,但它不是同一个对象,即设置为其他值的所有成员现在都是0。
我在这里错过了什么吗?

示例代码:

1
2
3
4
class foo {
  int result;
  // variables and methods
} static foo_obj;

B.h

1
2
3
4
5
#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

1
2
3
4
5
#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


A.h的实现文件中初始化静态变量 - 例如A.cpp。 同时将变量标记为extern