我正在尝试在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。在这种情况下,将不会创建对象,您可以在另一个级别捕获异常。

10-07 16:40