Re: Why are the "virtual" functions static?
- From: Owen Taylor <otaylor redhat com>
- To: Martin Stoilov <mstoilov odesys com>
- Cc: gtk-list gnome org
- Subject: Re: Why are the "virtual" functions static?
- Date: 20 Feb 2003 18:21:20 -0500
On Thu, 2003-02-20 at 18:07, Martin Stoilov wrote:
> Hi all,
>
> I am relatively new with GTK and I believe I am misunderstanding the
> concept of the type system. That is why I need a little help here.
>
> Looking at the source files of GTK it looks like that all functions that
> resemble C++ virtual functions and the type system configures when the
> the type is created are declared as static.
> For example the widget's "realise" function. If I decide to write my own
> widget deriving from the generic widget type I would initialize the
> pointer in GtkWidgetClass to point to my own "realize" function and that
> is all right. But when I start implementing my "realize" function I
> would like to first call the "realize" function of the base class so it
> can do its job and then proceed with my own code. The base class
> function though is static and is not declared in the header file. I
> thought probably there is a good reason for that and I shouldn't be
> calling it.
>
> I thought probably I am thinking too much in C++ terms and probably
> there is another way to accomplish this. I would highly appreciate if
> somebody helps me with this.
Make a global parent_class variable:
static GtkWidgetClass *parent_class = NULL;
In your class_init:
parent_class = g_type_class_peek_parent (class);
To chain up:
if (GTK_WIDGET_CLASS (parent_class)->unrealize)
(* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget);
There are _lots_ of examples of this in GTK+.
Regards,
Owen
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]