c++ - '&' 需要 &std::unique_ptr<>.get 上的左值

标签 c++ unique-ptr lvalue

我正在尝试使用函数 NuiCreateSensorByIndex(int,INuiSensor**) .我尽量不使用裸指针,所以我做了 std::unique_ptr<INuiSensor> nui;使其成为 unique_ptr。 现在我想访问这个函数,所以我执行以下操作:hr = NuiCreateSensorByIndex(i, &nui.get()); ,但这是错误的:

KinectManager.cpp:29: error: C2102: '&' requires l-value

我做错了什么以及如何解决?

最佳答案

编译器是对的:虽然std::unique_ptr<INuiSensor>可用于指向事物,它不是 NuiCreateSensorByIndex(int,INuiSensor**) 期望的对象指针功能。该函数需要一个指向指针的指针的原因是它想通过这种赋值来修改指针的内容:

*ptrToPtr = somePtr;

如果编译器让你传递一个指向std::unique_ptr<INuiSensor>的指针,此分配将无效。这就是为什么您需要创建一个临时的“裸”指针,将其传递给函数,然后将结果分配回 std::unique_ptr<INuiSensor> 的原因。 .

关于c++ - '&' 需要 &std::unique_ptr<>.get 上的左值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16262818/

相关文章:

c++ - 为什么克隆方法总是返回一个指针?

c++ - 在结构中使用 Vulkan 唯一句柄会导致 "implicitly deleted"错误

c++ - 使用std::unique_ptr boost 图形捆绑属性

c++ - 在 C++ 中使用它时出错

c++ - 具有左值和右值的可变参数模板类构造函数

c++ - std::move 的用法

c++ - 如何在 OpenCV 中以编程方式在 YAML 中编写注释?

c++ - 虚幻引擎/C++ : How to draw a texture mask based on where 2D UI Widgets are on-screen

c++ - 如何在 C++11 中实现 make_unique 函数?

c - 在 Micro 8051 的 Keil 中将字符指针函数的返回值分配给字符变量数组时出错