gpt4 book ai didi

C++ 处理在异常中创建的对象

转载 作者:行者123 更新时间:2023-11-30 01:53:52 26 4
gpt4 key购买 nike

我正在尝试创建一个异常对象,如果成功,我想将该对象添加到 vector 中。这是我的代码:

try{

CCoord newCoord(input); //I'm parsing the input into several prvt variables

}
catch(...){
//it failed, just quit
}

//if no error occured, add it to the vector
vCoords.push_back(newCoord);

但我无法访问 try block 之外的对象。请问有什么解决办法吗?

最佳答案

您不能访问其范围之外的对象。最好的办法就是将 push_back 移到 try block 内(否则您必须默认在 block 上方构造它,或者创建一个指针并在 block 内动态分配)。

下面是更好的方法:

try{

CCoord newCoord(input); //I'm parsing the input into several prvt variables


//if no error occured, add it to the vector
vCoords.push_back(newCoord);
}
catch(...){
//it failed, just quit
}

请注意注释“如果没有发生错误,将其添加到 vector 中”仍然是正确的——如果 CCoord 构造函数抛出异常,它将跳过 push_back 到 catch block 。

关于C++ 处理在异常中创建的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22695696/

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