我很难找到一个解决方案,这将允许我在捕获一个潜在的初始化异常的同时保持对象的作用域为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