我很難找到一個解決方案,這將允許我在捕獲一個潛在的初始化異常的同時保持對象的作用域爲main方法。嘗試catch類的變量初始化的範圍
下面的僞代碼試圖最好地說明我的問題。
int main() {
// Initialisation
SomeObject * object;
try {
SomeObject obj; // Initialisation can cause an exception
object = &obj;
}
catch (SomeException &ex) {
// Handle exception
}
// object out of scope undefined behaviour
// Application Logic
return 0;
}
據我所知,對象將再次在try塊結束時被刪除,所以使用指針時,會導致不確定的行爲。
我該如何做這樣的事情,並將對象傳遞給函數作用域,以便對象不被刪除?
我可以在我的項目中使用C++ 14解決方案。
'保持的物體的範圍本地到主方法「 - 爲什麼在這種情況下,而不是十年把它放在你想要使用它的範圍內?如果你在子函數中聲明瞭對象作爲局部變量 - 在你從這個子函數退出到'main'之後,任何方法都會被廢棄。所以如果你需要在'main'範圍內有對象 - 在這裏聲明 – RbMm