首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不透明结构的unique_ptr?(C++)

不透明结构的unique_ptr?(C++)
EN

Stack Overflow用户
提问于 2015-12-07 09:12:31
回答 2查看 2.5K关注 0票数 5

库定义不透明数据类型:

代码语言:javascript
复制
struct OpaqueStruct;

客户端代码必须获得并发布一个OpaqueStruct*。我可以访问图书馆的资料来源。

不幸的是,shared_ptrunique_ptr都不能存储该指针,从而产生错误:无效的应用程序“sizeof of”到不完整类型。

我能想到的最好的事情就是借用最后守卫from this post

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

EN

回答 2

Stack Overflow用户

发布于 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?

票数 3
EN

Stack Overflow用户

发布于 2015-12-10 12:42:23

代码语言:javascript
复制
std::unique_ptr<OpaqueStruct, void(*)(OpaqueStruct*)>
               ops(newOpaqueStruct(), deleteOpaqueStruct)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34129967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档