在GObject Manual的样板代码一章中,当viewer file使用G戥DECLARE戥final戥type声明为final类型时,由于它隐藏在未包含的viewer file.c后面,我们如何向它添加公共数据?
最佳答案
“可派生”GObject类型和“最终”GObject类型之间的主要区别在于实例数据结构的可见性。
如果GObject类型是“可派生的”,那么您只能使用私有实例数据结构,因为实例结构是公共的,并且生成时只包含父级的结构。
如果GObject类型是“final”,则只获取实例字段,因为实例数据结构是C源文件的私有结构。
除非您决定不使用宏并手工编写样板文件,否则不能混合使用这两种方法。
此外,您不应该访问实例数据结构上的字段;而应该提供访问器函数,以便您可以安全地验证前置条件和后置条件。
关于c - 如何创建具有公共(public)成员和私有(private)成员的GObject最终类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45094987/