我正在尝试在A类构造函数中添加该选项以从文件加载对象。但是我不确定加载失败时该怎么办(文件加载失败,文件格式错误..)。代码使用A表示loadObjects是否为true,这会导致分段错误。也许在构造函数中加载不是最好的方法...
template <typename T>
class A
{
public:
A(const std::vector<Obj<T>*>& o) : objs(o) {}
A(const std::string& file)
{
// loadObject adds new objects in objs
// objs.push_back(new Obj<T>);
if ( loadObjects(file, objs) )
{
// good, can use object A
}
else
{
// Segmentation fault when using undefined A,
// What can I do to stop execution here.
}
}
virtual ~A()
{
for (size_t i=0; i<objs.size(); ++i)
delete objs[i];
objs.clear();
}
private:
std::vector<Obj<T>*> objs;
};
最佳答案
只需使用throw
。在这种情况下,将不会创建对象,您可以在另一个级别捕获异常。