我想創建一個extern指針,從該靜態對象內的靜態對象的值。我們將稱這個對象爲Foo。如何從該對象中獲取靜態對象的值?
到目前爲止,我得到這個工作的唯一方法是創建一個Foo繼承的Supervisor類,它包含兩個靜態類型變量。一個叫做superObject的是實際的初始化對象。另一個叫做superPointer,是一個相同類型的雙指針。在Foo對象的內部,我聲明瞭一個名爲TheSupervisor的extern指針併爲其分配一個nullptr。然後,從Supervisor基類中,我使用雙指針superPointer將TheSupervisor extern指針的值更改爲superObject的地址。 Wallah。
目標是在這裏創建一個全局可訪問的此對象的引用。盡我所能避免單身,保持線程安全。我只是想知道是否有更好的方法?
我會發布代碼,但我真的要清理它並改變它。我認爲描述就足夠了。實際上可能更簡單。
編輯:事實證明,對於靜態對象,我不能依賴於何時以及以何種順序構建它們。使用單相過程不適用於此。相反,我必須依靠一個兩階段的過程,比如我上面概述的過程。標記 Ilya Kobelevskiy的回答是正確的,因爲它演示了一種做法,但同樣,它應該在與靜態對象一起使用時出現警告。
爲什麼沒有單身? – Micka
好問題。這個Foo類實際上是一個模板類。對於這種特定類型的Foo,我使用模板專門化進行初始化,然後創建全局訪問權限,如上所述。我只想要其中之一。然而,對於其他類型,這些事情不會發生,我可以有不止一個。這是否回答你的問題? – Stradigos