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
};
Run Code Online (Sandbox Code Playgroud)
问题是:如何设计析构函数以便只删除一次reaction_?
三个直接的想法:
1)必须由一个X类实例拥有reaction_?它不能被外部实体拥有,所以没有X ::〜X需要删除吗?
2)使用boost :: shared_ptr
3)使用static int实现自己的引用计数.如果你是多线程的,请记住锁定.