3
如何定義靜態常量std :: string類變量可以安全地在我的程序中隨處使用?定義靜態常量std :: string類變量
1的方法 - 失敗static initialization order fiasco:
文件:Consts.h
namespace constants {
struct Consts {
static const std::string kVar = "123";
}
}
第二個辦法 - 導致複製kVar
到每一個翻譯單元我們包括這個頭,從而導致一定義違反規則的原則,並可能導致免費錯誤 - 免費錯誤後使用 - 這是未定義的行爲,如果這個定義被包含到多個cpp文件(我想這樣做,因爲我想要全局共享std :: string常量)。
文件:Consts.h
namespace constants {
const std::string kVar = "123";
}
有沒有更好的方法(除使用宏 - 這是全球性的這麼難看的解決方案以及)以安全的方式來定義這種變種?什麼是這種結構最好的實踐證明?
我已經使用名稱空間常量來舉例說明這裏有一些命名空間。 –