Chaining up is often loosely defined by the following set of conditions:
There are many uses to this idiom:
I am personally not really convinced any of the last two uses are really a good idea but since this programming idiom is often used, this section attempts to explain how to implement it. To explicitly chain up to the implementation of the virtual method in the parent class, you first need a handle to the original parent class structure. This pointer can then be used to access the original class function pointer and invoke it directly. [13] The function static void b_method_to_call (B *obj, int a) { BClass *klass; AClass *parent_class; klass = B_GET_CLASS (obj); parent_class = g_type_class_peek_parent (klass); /* do stuff before chain up */ parent_class->method_to_call (obj, a); /* do stuff after chain up */ }
[13]
The original adjective used in this sentence is not innocuous. To fully
understand its meaning, you need to recall how class structures are initialized: for each object type,
the class structure associated to this object is created by first copying the class structure of its
parent type (a simple |