我的 C++ 类聚合了一个辅助对象,它可能会在构造函数中抛出异常,但我自己的类不能抛出(我自己的类被一个框架使用,该框架没有为构造函数抛出的异常做好准备)。现在我通过创建对象来延迟辅助对象的构建来减轻这种风险,new
以便我能够捕获任何异常:
struct HelperObject {
HelperObject() {
throw 0;
}
}
struct MyObject {
HelperObject *o;
MyObject() : o( 0 ) {
try {
o = new HelperObject;
} catch ( ... ) {
// ...
}
}
};
但是,为此滥用有点烦人new
;我突然不得不处理整个代码的指针,除了它让我可以更好地控制对象的构造时间之外,没有任何理由。
是否有可能在没有 ussign 的情况下达到这种效果new
?