編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
g++
問題(Question):
我有兩個 class A、class B,想要在 B 的建構子裡丟東西給 A。
在宣告成全域變數的時候,有可能會因為 B 先建構好,再 A,導致 A 存的東西被清掉。
舉例來說:
B o1(123);
A master;
B o2(456);
這樣的話,進到 main 裡面後看到的 master 裡面只有 456。
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
https://www.ideone.com/nSYZD8
補充說明(Supplement):
我目前的解決辦法是用這個方式:
class A &master() {
static A _master;
return _master;
}
用 master() 代替 master。
不過這樣感覺怪怪的,不知道有沒有其他正常的方法?