GObject 是一个程序库,它可以帮助我们使用 C 语言编写面向对象程序。
GObject实现有一套固有的格式,可以理解为C++语言的语法一样,如果要使用GObject就必须按格式实现。
GObject的对象系统提供了一种灵活的、可扩展的、并容易映射(到其它语言)的单根继承面向对象的C语言框架。
animal-base.h的实现如下:
#ifndef _BASE_H_
#define _BASE_H_
#include <glib-object.h>
#include <stdio.h>
typedef struct _AnimalBase AnimalBase;
typedef struct _AnimalBaseClass AnimalBaseClass;
#define ANIMAL_TYPE_BASE (animal_base_get_type())
//实例类型转换
#define ANIMAL_BASE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ANIMAL_TYPE_BASE, AnimalBase))
//实例类型判定
#define ANIMAL_IS_BASE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ANIMAL_TYPE_BASE))
//类结构转换
#define ANIMAL_BASE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ANIMAL_TYPE_BASE, AnimalBaseClass))
//类结构判定
#define ANIMAL_IS_BASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ANIMAL_TYPE_BASE))
//获取类结构
#define ANIMAL_BASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ANIMAL_TYPE_BASE, AnimalBaseClass))
struct _AnimalBase
{
GObject parent;
char szName[32]; //名称
int iEye; //眼睛个数
int iNose; //鼻子个数
int iMouth; //嘴巴
int iLeg; //腿
int iTail; //尾巴
};
st