首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有办法自动生成基于QSharedData的结构?

有没有办法自动生成基于QSharedData的结构?
EN

Stack Overflow用户
提问于 2010-06-14 17:36:24
回答 2查看 560关注 0票数 1

Qt有一个内置的支持,用于通过QSharedDataQSharedDataPointer创建具有集成引用计数的对象。所有这些都很好用,但是对于每个这样的对象,我需要写很多代码:具有构造函数和复制构造函数的QSharedData-based实现类,以及每个字段具有访问器方法的对象类本身。

对于一个有5-10个字段的简单结构,这需要很多几乎相同的代码。有没有一些方法可以自动生成这样的类?也许是一些生成器存在,它们采用简短的描述,并自动生成具有所有访问器的实现类和对象类?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-14 22:16:14

在使用QSharedData/Pointer时,通常不需要实现复制ctor或operator=。默认操作是复制/分配QSharedData派生的成员,这通常会做正确的事情(TM)。对于公共类,您需要实现创建私有对象的ctor,如果私有类不是在头部中声明的,而是在实现中声明的(这更好),则需要实现一个dtor (什么也不做,唯一的问题是没有在私有声明之后的.cpp中内联和定义)。对于私有类,不需要方法/ctor/dtor实现。对于简单的基于值的类,编写setter当然很乏味,但如果使用普通的私有成员变量,情况也是如此。LOC中的开销不会随着成员数量的增加而增加。

不,据我所知,没有标准的生成器解决方案,尽管编写脚本或emacs宏等并不难。将这些东西添加到公开可用的工具箱或QtCreator中可能是有意义的……

票数 1
EN

Stack Overflow用户

发布于 2010-06-14 17:57:37

我认为这些东西不会有生成器,但我建议做两件事:

  • (ab)use existing shared containers (QVector,QList...)
  • (使用现有共享容器(QVector、QList...))和阅读有关QSharedDataQSharedDataPointer和read的文档(包含示例

这两个子类都有简单的示例,展示了如何实现看似共享的特性。我不能进一步帮助您,因为我从来没有创建自己的需求。

转念一想,为什么不让所有数据字段都公开,并使用QSharedData派生函数作为具有引用计数的类结构呢?也许封装不是很好,但是如果你很小心,就不会出什么问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3036204

复制
相关文章

相似问题

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