库定义不透明数据类型:
struct OpaqueStruct;客户端代码必须获得并发布一个OpaqueStruct*。我可以访问图书馆的资料来源。
不幸的是,shared_ptr和unique_ptr都不能存储该指针,从而产生错误:无效的应用程序“sizeof of”到不完整类型。
我能想到的最好的事情就是借用最后守卫from this post。
如何将RAII用于不透明的结构指针?
发布于 2015-12-07 11:38:56
您只能构造和删除完整类型,请参见此处:Deletion of pointer to incomplete type 'Point'; no destructor called。因此,至少执行构造/销毁的代码片段需要知道完整的类型。
可以使用不完全类型声明unique_ptr或shared_ptr。有关这些智能指针的哪些成员可以在只知道不完整类型的上下文中使用,请参见 required to know the full definition of T?。
发布于 2015-12-10 12:42:23
std::unique_ptr<OpaqueStruct, void(*)(OpaqueStruct*)>
ops(newOpaqueStruct(), deleteOpaqueStruct)https://stackoverflow.com/questions/34129967
复制相似问题