![]() |
1
1
你当然可以从一个没有动态分配的东西转移到一个 是 动态分配。 不过,这只有在“移动”对你的类型有意义和价值的情况下才有用。否则,您将无法复制数据。
记得:
|
![]() |
2
1
单独使用指向void的指针当然不可能做到这一点,因为所有权意味着要负责删除动态对象,并且不可能通过void指针删除对象。 它可以通过使用deleter函数对象来实现。没有必要为此编写包装器类,因为您已经介绍了标准库 1. .
不完全是这样,因为你不能通过指向void的指针来间接,而且,你还没有在那里创建一个对象,所以没有什么可分配的。 离开左值引用参数也是个坏主意。 您似乎试图创建一个动态对象,它是参数对象的副本(通过移动)。下面是一个如何做到这一点的示例:
你可以得到一个指向void的指针,如下所示:
1.
要删除任何类型的对象(可以通过指向void的指针来实现),但也可以拥有该对象(与指向void的指针不同),标准库中有一种类型:
|
![]() |
Community wiki · safe_ptr实现 1 年前 |
![]() |
lplplplp · 为什么不能访问函数外的结构指针 2 年前 |
![]() |
Fabio · 在c中将指针赋给常数指针++ 2 年前 |
![]() |
Gabe Tucker · 无法在golang中分配接口对象指针 2 年前 |