Qt有一个内置的支持,用于通过QSharedData和QSharedDataPointer创建具有集成引用计数的对象。所有这些都很好用,但是对于每个这样的对象,我需要写很多代码:具有构造函数和复制构造函数的QSharedData-based实现类,以及每个字段具有访问器方法的对象类本身。
对于一个有5-10个字段的简单结构,这需要很多几乎相同的代码。有没有一些方法可以自动生成这样的类?也许是一些生成器存在,它们采用简短的描述,并自动生成具有所有访问器的实现类和对象类?
发布于 2010-06-14 22:16:14
在使用QSharedData/Pointer时,通常不需要实现复制ctor或operator=。默认操作是复制/分配QSharedData派生的成员,这通常会做正确的事情(TM)。对于公共类,您需要实现创建私有对象的ctor,如果私有类不是在头部中声明的,而是在实现中声明的(这更好),则需要实现一个dtor (什么也不做,唯一的问题是没有在私有声明之后的.cpp中内联和定义)。对于私有类,不需要方法/ctor/dtor实现。对于简单的基于值的类,编写setter当然很乏味,但如果使用普通的私有成员变量,情况也是如此。LOC中的开销不会随着成员数量的增加而增加。
不,据我所知,没有标准的生成器解决方案,尽管编写脚本或emacs宏等并不难。将这些东西添加到公开可用的工具箱或QtCreator中可能是有意义的……
发布于 2010-06-14 17:57:37
我认为这些东西不会有生成器,但我建议做两件事:
这两个子类都有简单的示例,展示了如何实现看似共享的特性。我不能进一步帮助您,因为我从来没有创建自己的需求。
转念一想,为什么不让所有数据字段都公开,并使用QSharedData派生函数作为具有引用计数的类结构呢?也许封装不是很好,但是如果你很小心,就不会出什么问题。
https://stackoverflow.com/questions/3036204
复制相似问题