【发布时间】:2017-05-28 00:22:15
【问题描述】:
我在试图找到一种解决方案时遇到了困难,该解决方案允许我将对象的范围保持在主方法的本地,同时捕获潜在的初始化异常。
下面的伪代码试图最好地说明我的问题。
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 解决方案。
【问题讨论】:
-
to keep the scope of an object local to a main method- 为什么在这种情况下而不是在你想使用它的范围内声明它?如果您在子函数中将对象声明为局部变量 - 在您从该子函数退出到main后,任何方式都将是垃圾。所以如果你需要在main范围内有对象 - 在这里声明它
标签: c++ windows exception undefined-behavior scoping