SFXBrewPointer クラスの使用方法
SFXBrewPointer クラスは BREW インターフェースのインスタンスを自動管理するためのスマート ポインター クラスです。このクラスはテンプレート クラスとなっており、ラッパー クラスの種類だけ自動的に型が生成されます。
ラッパー クラスのインスタンスは、スマート ポインターで自動的に管理されますので、 SFXBrewPointer クラスを明示的に使用する必要はありません。
以下のようにして、明示的に型を生成することも可能です。
■ SFXBrewPointer クラスの使用方法Void SFXPointerExplainer::_SFXBrewPointer(Void) const { // 以下の 2 種類の変数宣言は同等 // ( 通常、記述しやすい Smp バージョンを利用する ) SFXBrewPointer<SFBDisplay> display1; SFBDisplaySmp display2; // ラッパー クラスのインスタンスの生成は、 // 各ラッパー クラスの NewInstance() 関数または // GetInstance() 関数を利用する // ( スマート ポインターがインスタンスを管理するので、解放処理は不要 ) SFBGraphicsSmp graphics; SFBGraphicsPtr raw_graphics; if ((graphics = SFBGraphics::NewInstance()) != null) { // インスタンスの取得成功 } // 管理しているインスタンスの生ポインターの取得 raw_graphics = graphics.Get(); // スマート ポインターの比較 if (display1 == display2) { } if (display1 != display2) { } // スマート ポインターと生ポインターの比較 if (graphics == raw_graphics) { } // null ポインターとの比較 if (graphics != null) { } // 他の型を表すスマート ポインター同士の比較 // ( 推奨されないが、設計上可能 ) if (graphics != display1) { } // スマート ポインターが管理するインスタンスのポインターのキャストは、 // static_pointer_cast 演算子などを利用する // ( static_cast 演算子を利用してはいけない ) SFBBaseSmp base; SFBBitmapSmp bitmap; base = bitmap; bitmap = static_pointer_cast<SFBBitmap>(base); // 空インスタンスの取得 // ( 関数の戻り値として空のインスタンスへの参照を返す場合に便利 ) SFBFileSmpConstRef file(SFBFileSmp::EmptyInstance()); unused(file); // 管理しているインスタンスの明示的な解放 SFBFileMgrSmp filemgr; if ((filemgr = SFBFileMgr::NewInstance()) != null) { // SFXBrewPointer クラスの Release() 関数を呼び出す filemgr.Release(); // SophiaFramework 3.0 以上では // SFBBase (IBase) クラスの AddRef(), Release() 関数を呼び出せない /* filemgr->Release(); */ } return; }