enum Reaction{single,chain};
class X
{
X* parent_;
X* left_;
X* right_;
Reaction* reaction_;//this pointer points from every obj to the same place, cannot be static
};
問題是:如何設計析構函數以便只刪除一次reaction_?如何刪除指針只有一次?
enum Reaction{single,chain};
class X
{
X* parent_;
X* left_;
X* right_;
Reaction* reaction_;//this pointer points from every obj to the same place, cannot be static
};
問題是:如何設計析構函數以便只刪除一次reaction_?如何刪除指針只有一次?
三個直接的想法:
1)必須reaction_通過X類的一個實例擁有?它不能由外部實體擁有,這樣X ::〜X將永遠不需要刪除它嗎?
2)使用boost :: shared_ptr的
3)使用靜態INT實現自己的引用計數。如果你是多線程的,請記住鎖定。
有什麼問題,這樣的:
~X()
{
delete reaction_;
}
或者,也許我沒有完全理解你的問題!
使用boost::shared_ptr<Reaction>
在你的對象
使用boost::shared_ptr
或std::shared_ptr
(C++ 0x)。它只會在需要時統計引用和調用刪除。
「//這個指針從每個obj指向同一個地方,不能是靜態的」 – 2011-02-15 10:17:04