どのようなタイプの GTK+ 2.0 ウィジェットからも継承できるクラスを C で作成するにはどうすればよいですか? C++ を使用する場合は、そのパラメーターから継承して必要な動作を追加するテンプレートがあり、Objective-C で同様のことを行う場合は、NSProxy を使用してメッセージをクラス メンバーに転送することを知っています。これは実際のビュー コントローラーですが、GTK+ 2.0 を使用して C で同じタスクを達成する方法がわかりません。
どのようなタイプの GTK+ 2.0 ウィジェットからも継承できるクラスを C で作成するにはどうすればよいですか?
PS 理由を尋ねる人もいます。理由を尋ねることは十分に公平です。以前の質問でわかるように、オブジェクト指向でない GUI ライブラリは何ですか? 私は非オブジェクト指向の方法でプログラミングすることに挑戦してきました。オブジェクト指向ではない方法でプログラミングしたいので、GTK+ 2.0 で利用可能なすべてのクラスを抽象化して、必要な動作を表現する必要があります。具体的には、各クラスを継続で機能させる必要があります。
簡単な継続の実装は次のとおりです。
struct CONTINUATION;
typedef struct CONTINUATION continuation;
struct CONTINUATION {
void* environment;
continuation (*ip)(void*);
};
その継続にメッセージを送信したいクラスは、IP 値が (スタブ) 関数 event_get を指すまで、その継続をその環境に適用されたその IP の結果で継続的に置き換えます。次に、クラスは環境内の情報を使用して適切に応答し、新しい継続を取得するため、次のメッセージのためにサイクルを最初からやり直すことができます。