gpt4 book ai didi

c++ - try catch 类变量初始化的作用域

转载 作者:可可西里 更新时间:2023-11-01 11:24:29 26 4
gpt4 key购买 nike

我在尝试找到一种解决方案时遇到了困难,该解决方案允许我将对象的范围保持在 main 方法的本地范围内,同时捕获潜在的初始化异常。

下面的伪代码试图最好地说明我的问题。

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 block 结束,该对象将被删除,因此使用指针将导致未定义的行为。

我怎样才能做这样的事情并将对象传递给函数范围,这样对象就不会被删除?

我可以在我的项目中使用 c++14 解决方案。

最佳答案

How can I do something like this and pass the object to the function scope so the object is not deleted?

您可以改用智能指针:

int main () {
// Initialisation
std::unique_ptr<SomeObject> object;

try {
object = std::make_unique<SomeObject>(); // Initialisation can cause an exception
}
catch (SomeException &ex) {
// Handle exception
}

if(object) {
// Application Logic
}
return 0;
}

关于c++ - try catch 类变量初始化的作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44222711/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com