Jos*_*ain 5 c++ boost shared-ptr
我正在使用libev,它需要将我的数据转换为void*以符合其预定义的结构.我需要将boost :: shared_ptr强制转换为void*,然后将void*转换回boost :: shared_ptr.这是我的代码
void foo(boost::shared_ptr<string>& a_string)
{
void* data = (void*)a_string.get();
boost::shared_ptr<string> myString((string*)data);
}
Run Code Online (Sandbox Code Playgroud)
我很确定这个工作正常,但是我的代码设置的方式我相信所有对我的字符串的shared_ptr引用都超出了范围,因为这个转换方法不会增加use_count,因此shared_ptr释放内存,而我仍然需要它.
有没有办法手动增加/减少use_count?理想情况下,当我转换为void*时,我会增加use_count,将我的void*传递给另一个函数,将void*转换回shared_ptr并减少use_count.
或者如果有人知道这个问题的另一种解决方案,我可以使用任何帮助
| 归档时间: |
|
| 查看次数: |
2301 次 |
| 最近记录: |