有什么方法可以自动生成基于QSharedData的结构?

时间:2010-06-14 09:36:24

标签: qt qshareddata

Qt有一个内置支持,用于通过QSharedDataQSharedDataPointer创建具有集成引用计数的对象。一切都很好,但是对于每个这样的对象,我需要编写很多代码:QSharedData - 基于构造函数和复制构造函数的实现类,对象类itsef,每个文件都有访问器方法。

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

2 个答案:

答案 0 :(得分:1)

我不认为发电机会存在这些东西,但我建议两件事:

这两个子类有简单的例子,展示了如何实现共享。我无法帮助你,因为我从来没有必要创建自己的。

第二个想法,为什么不公开所有数据字段,并使用QSharedData派生作为类似结构的类与引用计数?也许在封装方面不太好,但如果你小心,就不会发生任何错误。

答案 1 :(得分:1)

使用QSharedData / Pointer时,通常不必实现copy ctor或operator =。默认impls复制/分配QSharedData派生的成员,它通常使用Right Thing(TM)。 对于公共类,你需要实现创建私有对象的ctor,如果私有类没有在头文件中声明但是在实现中(更好),dtor(什么都不做,唯一的一点是不是内联并在.cpp中定义,在私有声明之后)。 对于私有类,不需要方法/ ctor / dtor实现。 对于简单的基于值的类,编写setter当然是单调乏味的,但如果使用普通的私有成员变量,情况也是如此。 LOC中的开销不会随着成员数量的增长而增长。

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