私のC++クラスは、コンストラクターで例外をスローする可能性のあるヘルパーオブジェクトを集約しますが、自分のクラスはスローしてはなりません(自分のクラスは、コンストラクターによってスローされる例外に備えていないフレームワークによって使用されます)。今のところ、new
例外をキャッチできるように、を使用してオブジェクトを作成することでヘルパーオブジェクトの構築を遅らせることで、このリスクを軽減しています。
struct HelperObject {
HelperObject() {
throw 0;
}
}
struct MyObject {
HelperObject *o;
MyObject() : o( 0 ) {
try {
o = new HelperObject;
} catch ( ... ) {
// ...
}
}
};
ただし、これを悪用するのは少し面倒new
です。オブジェクトが構築される時間をより細かく制御できることを除いて、正当な理由もなく、突然コード全体のポインターを処理する必要があります。
使用せずにこの効果に何かを達成することは可能new
ですか?