拡張 Tcl の中の,tcl++.h を取り出してみると良いでしょう.これ は,最初に Parag Patel によって開発された版を元にしています.これは, C++ で Tcl インタプリタをオブジェクトとして生成する為の,Tcl インタプ リタクラスを定義しています.また,パッチ ftp://harbor.ecn.purdue.edu/pub/tcl/distrib/tk3.2forC++.patch は,tk 3.2 の main.c や,幾つかのルーチンにパッチを当て,C++ コンパイ ラでのコンパイルを可能にします.このコードに関しては,Ken Yap
に感謝します. Mark Diekhans と Karl Lehenbauer は,これを使って,拡張 Tcl の ハンドル機能と組合せ,C++ クラスまわりの Tcl コマンドを作成しました.
この Tcl ハンドル機能は,Tcl コードからのテキストハンドルで参 照できる,表項目管理の方法を提供します.これは,一つのコマンドでデータ 構造を生成する必要のあるアプリケーションに,特定のデータ構造への参照返 し(例えば,ポインタ) や,他のコマンドからのデータ構造へのアクセスを可 能にします.例としては,ファイルハンドルがあげられます.
ハンドルのテーブルは,Tcl からアクセスされるクラスのインスタン スのポインタを格納しています.例えば,クラスを `foo_cl' として,コマン ド "new" を,このインスタンスを生成し,インスタンスへの Tcl ハンドルを 返すコマンドとして定義します.そうすると,ハンドルをメンバ関数からアク セス可能とすることが出来ます.ハンドルは,実際には `this' ポインタです.
例えば:
set obj [foo_cl::new] foo_cl::baz $obj "Hello world" foo_cl::delete $objこれは,オブジェクト指向の全てではありませんが,非常に便利ではあります.