我目前正在嘗試解決靜態初始化命令失敗。這是參考我以前的文章link。我有一個靜態方法來填充靜態容器的屬性。現在我的項目中的一個類有一個靜態屬性,它從該靜態方法中檢索一個值。問題是在啓動靜態方法之前調用該類的靜態屬性。我的問題是我該如何解決這個問題。 代碼示例如下解決靜態初始化命令失敗
//This is the code that has the static map container which is not initialized when
//its queried by the OtherClass::mystring
Header File
class MyClass
{
static std::map<std::string,std::string> config_map;
static void SomeMethod();
};
Cpp File
std::map<std::string,std::string> MyClass::config_map ;
void MyClass::SomeMethod()
{
...
config_map.insert(std::pair<std::string,std::string>("dssd","Sdd")); //ERROR
}
給現在的一些方法正被稱爲以下移植
Header File
class OtherClass
{
static string mystring;
};
Cpp File
std::string OtherClass::mystring = MyClass::config_map["something"]; // However config_map has not been initialized.
誰能解釋一下什麼是最好的方法來解決這樣的慘敗?我做了一些閱讀,但我仍然無法理解它。任何建議或代碼示例肯定會被讚賞。
在大多數情況下,使您的數據功能 - 靜態而不是類靜態應該可以解決問題。 – 2013-05-12 03:23:33