unique_ptr 到不透明结构?(C++)

184*_*615 6 c++ opaque-pointers c++11 c++14

库定义了不透明的数据类型:

\n\n
struct OpaqueStruct;\n
Run Code Online (Sandbox Code Playgroud)\n\n

并且客户端代码必须获取并释放OpaqueStruct*. 我可以访问库源。

\n\n

不幸的是,既不能存储该指针shared_ptr,也unique_ptr不能存储该指针,从而出现错误: invalid application of \xe2\x80\x98sizeof\xe2\x80\x99 to incomplete type

\n\n

我能想到的最好的办法就是从这篇文章中借用finally守卫

\n\n

如何将 RAII 用于不透明结构指针?

\n

Flo*_*ann 3

您只能构造和删除完整类型,另请参阅此处:删除指向不完整类型“Point”的指针;没有调用析构函数。因此,至少进行构造/销毁的代码片段需要知道完整的类型。

您可以使用不完整类型声明 unique_ptr 或 shared_ptr。对于可以在仅知道不完整类型的上下文中使用这些智能指针的哪些成员,请参阅是否需要 std::unique_ptr<T> 才能知道 T 的完整定义?