2011-02-16 229 views
0

我工作的一個項目中,有一個在頭文件中的一個聲明爲靜態對象(說A.H)。我包括在A.H另一頭文件,我可以訪問該對象和它的功能和數據,就像它是同一個對象。當將A.h包含到B.cpp中並嘗試使用同一個對象時,問題就開始了。對象存在正常的,但它不是同一個對象,即所有被設置爲其他值,現在成員0 我失去了一些東西在這裏?靜態對象與Visual Studio

示例代碼:

A.H

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 
+0

示例代碼將在這裏幫助。 '靜態'可以在C++中以多種方式使用,一種是明確地創建你觀察到的行爲! – Keith 2011-02-16 05:01:49

+0

我的回答得到了我的問題感謝丹尼爾A.白色。我將示例代碼放入,以便更容易理解。 – 2011-02-17 19:11:07

回答

3

初始化靜態變量爲您的實現文件- 例如A.cpp。同時將變量標記爲extern