我遇到了一個初始化命名空間中的一些const對象的問題。我有類似下面的命名空間:初始化命名空間中的const對象
namespace myNamespace{
const std::string HI = "Hi";
const std::string BYE = "Bye";
inline std::vector<std::string> createHiAndByeVector(){
std::vector<std::string> temp;
temp.push_back(HI);
temp.push_back(BYE);
return temp;
}
const std::vector<std::string> HI_AND_BYE = createHiAndByeVector();
}
如果我調試的初始化,我可以看到,無論HI
和BYE
得到分配的字符串文字。執行繼續到initialziae HI_AND_BYE
,但是當我們進入createHiAndByeVector()
函數時,HI
和BYE
都不再有任何值。然後在push_back()
方法中出現分段錯誤。如果我看看調用堆棧,我會看到該行:__static_initialization_and_destruction_0()
。到底是怎麼回事?我的對象在構建後立即被破壞?
爲什麼這麼繁瑣的:你只能說'的std ::矢量常量HI_AND_BYE { 「你好」, 「再見」};'。 –
2013-02-17 01:36:47
所有這些定義都出現在相同的翻譯單元(.cpp文件)中? – 2013-02-17 01:38:19
你有另一個靜態成員依賴於'HI_AND_BYE'?一種靜態的初始化訂單問題 – billz 2013-02-17 01:57:28