3
我希望能夠將auto_ptr作爲參數傳遞給構造函數。但是,如果無法創建新對象(可能沒有內存),那麼我希望原始auto_ptr能夠保留其值。將auto_ptr作爲參數傳遞給構造函數
例如:當新的操作者,而不創建對象返回
foo (Auto_ptr<A> autop1) {
Auto_ptr<B> autop2(new B(10, autop1, 40));
if (!autop2.get()) autop1.callFunc(); >>> segmentation fault; But I want to do this!
}
Class B{
public:
B(int var1, Auto_ptr<A> var2, int var3):
_var1(var1), _var2(var2), _var3(var3){ }
private:
int _var1, _var3;
Auto_ptr<A> _var3;
}
在函數foo(),新的對象B不因缺乏存儲器和autop1值創建被破壞。當我們嘗試訪問autop1時,會導致seg故障。 什麼是避免此問題的好方法。它可以,如果一個新的對象被創建,所有權被傳遞給它的成員變量。我希望能夠在foo()中使用autop1,如果無法創建新的B對象並且autop2將具有NULL。
但是我怎麼會知道如果構造函數會成功。 IMO知道構造函數是否成功的唯一方法是檢查新對象所分配的auto_ptr是否爲空。 是否有任何其他方式來知道構造函數是否成功(當我在構造函數中)? – 2011-02-17 19:57:06