65,185
社区成员




class X
{
public:
~X() { delete p; }
void fn(boost::shared_ptr<int> i)
{
p = i.get(); // 这儿应该增加i的引用计数
// 因为i中的指针我是放在析构函数中删除的.
// 该怎么增加i的引用计数?
}
private:
int* p;
};
void method()
{
boost::shared_ptr<int> i(new int(10));
X x;
x.fn(i);
}
//封装成模板
template <typename T>
class X
{
public:
X(T* m):p(m){}//这样更简洁
private:
boost::shared_ptr<T> p;
};
使用:
X a(new T);
//不需要释放
class X
{
public:
X(int* m):p(m){}//这样更简洁
private:
boost::shared_ptr<int> p;
};
class X
{
public:
X(boost::shared_ptr<int> m):p(m){}
//然后用p做任何你想做的事情。
private:
boost::shared_ptr<int> p;
};