本クラスライブラリの制作ポリシーとして Java の API の良い点を 取り入れようという考えがあります。 そのため、次のような点を守って実装しています。 まず、Java のクラスに相当するクラスは Java と同じように Object クラスのサブクラスとしています。 Java のインターフェースに相当するクラスは Object クラスを継承しません。 次に、全ての static ではないメンバ関数 (メソッド) は 純粋仮想関数 (virtual と =0 がつく) にしています。 全てのクラスは多重継承はせず、必ずポインタ宣言で使用します。
ダウンロードしたファイルに含まれている sample.dsw を使用してください。
本クラスライブラリを使用するファイルには
#include "basic.h"
を書いてください。それより上に書かれた命令は無視されます。
全てのクラスはそのクラス名と同じ名前の .cpp、.h ファイルで構成されています。 使用したいクラスのヘッダーファイルを include して下さい。 ただし、そのクラスに親クラスが存在する場合は 親クラスのヘッダーファイルから順に include して下さい。
Java の instanceof 演算子に相当する機能は
オブジェクト->instanceof(クラス名)
の様にメンバ関数呼び出しの様に書きます。
lib/math/ 以下のクラスのうち、
BezierSurface, BSplineSurface 以外のクラスは頻繁に
new, delete を繰り返されると予想されます。
これらのクラスの new, delete によるオーバーヘッドを軽減するため、
ObjectPool という考えを導入しています。
これは前もって各クラス用にメモリをリスト状に確保し、
必要に応じてそれらのメモリをやりくりするものです。
これらのクラスを使用する場合には、前もってプログラム開始時に
ObjectPool<クラス名>::newPool(確保量);
と記述し、ObjectPool を確保する必要があります。
あとは、new, delete を通常通り使用すれば ObjectPool に蓄えられた
メモリが使用されます。プログラム終了時には
ObjectPool<クラス名>::deletePool();
と記述し、メモリーを解放してください。
テンプレートを使用して実装されているクラスはコンパイルする必要はありません。 そのクラスのヘッダーファイルを include した時にコンパイルされるようになっています。