c++ - 将唯一指针的指针传递给采用双指针的函数
问题描述
我有一个功能可以有效地做到这一点
void foo(Class** c)
{
// memory checks and stuff
(*c) = new Class();
// more stuff
}
我无法更改此功能。要调用这个函数,我必须做这样的事情。
Class* c = nullptr;
foo(&c);
if (c)
{
// stuff
}
delete c;
我非常喜欢使用 astd::unique_ptr
而不是原始指针。但是,我不知道如何获取内部指针的地址。显然,下面的清单无法编译,因为我正在尝试获取右值的地址。
std::unique_ptr<Class> c = nullptr;
foo(&(c.get()));
if (c)
{
// stuff
}
我意识到我可以制作原始指针和唯一指针,调用函数,然后将原始指针提供给唯一指针,但我不想这样做。有没有办法做我想做的事?
解决方案
创建一个包装器foo
:
std::unique_ptr<Class> foo()
{
Class* c = nullptr;
foo(&c);
return std::unique_ptr<Class>(c);
}
推荐阅读
- python - 乳胶到 sympy 的转换
- powershell - PowerShell 创建 WMI 类
- windows - 通过 USB 列出连接设备的 CMD 命令?
- unit-testing - 如何用 jest 对这个 vue 组件进行单元测试
- node.js - 通过 multer 创建 ReadStream 并将文件上传到远程服务器
- python - Dataframe 无法正确设置 matplotlib 使用的索引
- ffmpeg - 我可以在一台机器上运行多少个 FFMPEG 命令
- javascript - 点击时关闭弹窗
- python - 如何在除日期列之外的所有行都是 NaN 的地方删除?
- wordpress - 为某些页面 ID 禁用古腾堡编辑器