1

Qt 有一个内置支持,用于通过QSharedData和来创建具有集成引用计数的对象QSharedDataPointer。一切都很好,但是对于每个这样的对象,我需要编写大量代码:QSharedData基于实现类的构造函数和复制构造函数,对象类 itef 以及每个字段的访问器方法。

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

4

2 回答 2

1

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

这两个子类有简单的例子来展示如何实现它看起来的共享性。不过,我无法进一步帮助您,因为我从来没有需要创建自己的。

再想一想,为什么不公开所有数据字段,并使用 QSharedData 派生类作为具有引用计数的类结构类?也许封装不好,但如果你小心,应该不会发生任何错误。

于 2010-06-14T09:57:36.887 回答
1

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

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

于 2010-06-14T14:16:14.310 回答