我有一个类foo,其成员bar类型std::shared_ptr<int>:
class foo
{
std::shared_ptr<int> bar;
/*other stuff here*/
};
Run Code Online (Sandbox Code Playgroud)
在I类要分配new int给bar.但我不能写,bar = new int();因为指针没有公共赋值运算符.
如何应该我做这个?我可以std::move或者std::swap但这些都不对.
Bat*_*eba 14
bar = std::make_shared<int>(); 是一种方式,特别是如果你想保留赋值运算符的易处理性.
Tar*_*ama 11
你可以使用reset这个:
bar.reset(new int());
Run Code Online (Sandbox Code Playgroud)
这将delete是当前内容(如果有)并将内部指针设置为new表达式返回的内容.
| 归档时间: |
|
| 查看次数: |
1160 次 |
| 最近记录: |