关于boost::shared_ptr增加引用计数据问题

avisnet 2008-10-09 10:41:01
我有个函数接受一个boost::shared_ptr类型的参数,我想保留shared_ptr引用的指针,该怎么做?

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);
}
...全文
164 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
星羽 2008-10-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 iambic 的回复:]
直接把p声明为shared_ptr不就完了?
[/Quote]

同意
星羽 2008-10-09
  • 打赏
  • 举报
回复
你既然delete ,那就别用shared ptr吧
jia_xiaoxin 2008-10-09
  • 打赏
  • 举报
回复
class X
{
public:
~X() { delete p; }
void fn(boost::shared_ptr<int> i)
{
cout << i.use_count() << endl;
p = i.get(); // 该怎么增加i的引用计数? //引用计数不是自动增加的么?
cout << i.use_count() << endl;
}
private:
int* p;
};

void method()
{
boost::shared_ptr<int> i(new int(10));
X x;
x.fn(i);
}
iambic 2008-10-09
  • 打赏
  • 举报
回复
直接把p声明为shared_ptr不就完了?
taodm 2008-10-09
  • 打赏
  • 举报
回复
那么,基本上,你根本就不该使用shared_ptr
Oversense 2008-10-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 Chiyer 的回复:]
引用 2 楼 iambic 的回复:
直接把p声明为shared_ptr不就完了?


同意
[/Quote]

同意
帅得不敢出门 2008-10-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 iambic 的回复:]
直接把p声明为shared_ptr不就完了?
[/Quote]
up
boost::shared_ptr<int> p;
然后析构中的delete都省了.

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧