GObject クラス実装

GObject

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/10/03 03:43 UTC 版)

クラス実装

GObjectのクラスはクラス構造体とインスタンス構造体という少なくとも2つの構造体で実装される。

クラス構造体
C++におけるvtableに相当する。先頭にスーパークラスのクラス構造体がある。その後に関数ポインタ群があり、それぞれがクラスの仮想メソッドを指している。クラス固有変数を使って、クラス変数をエミュレートできる。
インスタンス構造体
オブジェクトのインスタンス毎に存在する。先頭にスーパークラスのインスタンス構造体がある。その後にインスタンス固有の変数群があり、C++のメンバ変数に対応する。

C言語の構造体には“public”、“protected”、“private”といったアクセス修飾がないので、インスタンス構造体にプライベートデータへのポインタ _priv がある。プライベート構造体は共通ヘッダファイルに宣言することはできるが、定義は個々の実装ファイルでのみ行われ、外部から見えないようにしている。プライベート構造体をGTypeに登録すると、自動的にオブジェクトシステムで確保される。プライベートデータが必要なとき常に G_TYPE_INSTANCE_GET_PRIVATE を使うようにすれば、_priv ポインタを構造体に含める必要はない。

GObjectフレームワークの欠点は、冗長性である。新たなクラスを生成するとき、型登録や各種マクロを多量にコーディングする必要があり、その多くは決まりきった形式である。GObject BuilderやGOB2[4]はこの問題に対処するツールであり、Java風の構文からコードを生成できる。GOB2で書かれたコードはコンパイル前にC言語のコードに展開される。他にもC#風の文法でコーディングできるValaがある。


  1. ^ GObject Reference ManualArchived 2007年7月3日, at the Wayback Machine.
  2. ^ GTypeArchived 2007年6月9日, at the Wayback Machine.
  3. ^ glib-mkenumsArchived 2007年8月12日, at the Wayback Machine.
  4. ^ GObject Builder


「GObject」の続きの解説一覧




固有名詞の分類


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「GObject」の関連用語

GObjectのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



GObjectのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのGObject (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2024 GRAS Group, Inc.RSS