クラス A コンストラクターにオプションを追加して、ファイルからオブジェクトをロードしようとしています。しかし、読み込みに失敗した場合の対処方法がわかりません (ファイルの読み込みに失敗した、ファイル形式が正しくない..)。コードは、loadObjects が true であるかどうかに関係なく A を使用し、セグメンテーション違反につながります。コンストラクターでのロードは最善の方法ではないかもしれません...
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;
};