per*_*eal 9 c++ casting shared-ptr c++11
我有一个结构:
struct Params {
std::shared_ptr<void> user_data;
/* ... */
};
Run Code Online (Sandbox Code Playgroud)
我想这样使用它:
int main() {
std::shared_ptr<SpecializedParams> sp(new SpecializedParams(100));
Params params;
/* ... */
params.user_data = std::static_pointer_cast<void>(sp);
/* ... */
std::shared_ptr<SpecializedParams> sp2 =
std::static_pointer_cast<SpecializedParams>(
params.user_data
);
/* ... */
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这有效且安全吗?
实际删除共享对象的代码是在创建共享指针时确定的(这就是为什么在构造shared_ptr时需要完整类型,而不是在破坏shared_ptr时).因此,即使您的shared_ptr是指向SpecializedParams对象的最后一个指针,该对象也会被正确销毁.
| 归档时间: |
|
| 查看次数: |
1457 次 |
| 最近记录: |