考慮類MyClass
有沒有默認構造函數。C++:將值分配給全局類變量
我想寫,看起來像下面的代碼:
MyClass instance;
void init_system() {
instance = MyClass(parameters, of, the, constructor);
}
上面我當然寫的代碼失敗,出現錯誤MyClass的沒有C'tor不帶參數。
有沒有做任何正確的方式,或者我必須實現一種解決方法,例如使用共享指針?
考慮類MyClass
有沒有默認構造函數。C++:將值分配給全局類變量
我想寫,看起來像下面的代碼:
MyClass instance;
void init_system() {
instance = MyClass(parameters, of, the, constructor);
}
上面我當然寫的代碼失敗,出現錯誤MyClass的沒有C'tor不帶參數。
有沒有做任何正確的方式,或者我必須實現一種解決方法,例如使用共享指針?
好,無論是你的類的默認對象能夠明智地存在,或者不能。
在後一種情況下,你可能會感興趣的std::optional
(boost::optional
之前,C++ 17)推遲對象的構造。
要考慮的另一個類是std :: unique_ptr。 –
您可以在對象的初始化進入你init_system()
功能:
MyClass& init_system()
{
static MyClass instance(parameters, of, the, constructor);
return instance;
}
你可能想看看了單件模式,也和讀到它的廣泛討論;)
而且是的,另一種解決方案可能是使用或shared_ptr<>
。
有2種方式實現這一目標....
MyClass instance(parameters, of, the, constructor);
會初始化MyClass的使用正確的參數。
Singleton模式
MyClass & MyClass::getInstance(){
static MyClass instance(parameters, of, constructor);
return instance;
}
與返回的getInstance在呼叫時的時間。
第二圖案改善了當對象被構建在控制。
目前還不清楚(至少對我來說),你正在嘗試做的。你想要初始化什麼?靜態成員變量(AKA類變量)?只需創建一個靜態初始化方法?還有別的嗎?請澄清。你想要一個單身人士嗎?或者一個靜態的工廠方法? – hyde