K. *_*res 1 c++ pointers unique-ptr
我有一个功能可以有效地做到这一点
void foo(Class** c)
{
// memory checks and stuff
(*c) = new Class();
// more stuff
}
Run Code Online (Sandbox Code Playgroud)
我无法更改此功能。要调用这个函数,我必须做这样的事情。
Class* c = nullptr;
foo(&c);
if (c)
{
// stuff
}
delete c;
Run Code Online (Sandbox Code Playgroud)
我更喜欢使用 astd::unique_ptr而不是原始指针。但是,我不知道如何获取内部指针的地址。显然,下面的清单无法编译,因为我正在尝试获取右值的地址。
std::unique_ptr<Class> c = nullptr;
foo(&(c.get()));
if (c)
{
// stuff
}
Run Code Online (Sandbox Code Playgroud)
我意识到我可以创建原始指针和唯一指针,调用函数,然后将原始指针指向唯一指针,但我宁愿不这样做。有没有办法做我想做的事?
创建一个包装foo:
std::unique_ptr<Class> foo()
{
Class* c = nullptr;
foo(&c);
return std::unique_ptr<Class>(c);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |