【发布时间】:2016-02-04 18:54:17
【问题描述】:
我有一个对象的智能指针,我需要传递给一个只接受指针指针的方法。
这是一个示例,原始智能指针失去了所有权。
int main(int argc, char* argv[])
{
std::unique_pointer<pcap_if_t> object;
auto object_pointer = object.get();
pcap_findalldevs(&object_pointer, ...); // The unique_ptr loses ownership after being passed to the function
}
如何在不丢失指针所有权的情况下完成此操作?
编辑:
我正在调用的函数是 libpcap 中的 pcap_findalldevs。恐怕该功能可能是失去所有权的原因。
我已经更新了我的代码示例以反映我实际所做的事情。
【问题讨论】:
-
只要
some_function不拥有您传递给它的指针或其对象指向您正在做的事情的指针,就可以了。 -
get不会转让所有权。release,确实如此。 -
@Deleisha 问题清楚地表明:“我将如何做到这一点,没有 原始智能指针丢失指针所有权?” (强调我的)。
-
现在你遇到了麻烦,阅读 pcap_findalldevs 的文档,你甚至可以避免 unique_ptr(如果内存由该库管理)
-
将一个指向 pcap_findalldevs 的指针的地址传递给 pcap_findalldevs 是没有意义的。该函数将覆盖指针。
标签: c++ pointers smart-pointers unique-ptr