2012-02-06 65 views
1

我正在製作一個VC++ 2008的windows項目,並且我希望有一個實例化的對象存在於全局所有激烈的目的中。這個對象應該是一個計時器,用於監視程序運行了多長時間,並且需要被其他對象訪問以便生成日誌文件。我知道我可以將native和sudo-native(string)成員標記爲extern以使它們可訪問,但是如何讓對象全局存在於其他對象中。 是否將對象定義放在需要知道其存在的對象的類之前(確保首先加載類),還是必須在我的main中放置一個允許訪問該對象的方法?全局自創對象

+1

'sudo'只存在於類Unix環境中。在Windows上,您需要查看*用戶帳戶控制*(UAC),但您應該非常小心。不過,我懷疑你需要一個簡單的計時器。 – 2012-02-06 07:28:30

回答

2

只需創建你所需要的方法的類,然後聲明一個實例全局類 在你想要使用它的所有模塊中包含該類的頭文件,並且還有一個extern聲明,告訴模塊該定義在別處。也許你 有一些共同的標題,都包括在內。

extern MyClass yourInstance; 

全局定義應該是一個主要的()是

MyClass yourInstance; 

或者如果你喜歡使用指針它分配在堆中,然後在主 開始分配,並在結束刪除只要將指針設爲全局即可。

表示,通常不是全局聲明,而應該在main()中聲明 MyClass,然後將指針傳遞給您使用的所有函數/類。這就是我將如何做到這一點。然後,您不需要extern語句,只需包含標題MyClass.h

全局實例的一個問題是,您幾乎沒有或無法控制它們何時創建/銷燬 。