![]() ![]() ![]()
|
BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework UNIVERSE 5.0 |
SFXBrewPointer クラスは BREW インターフェースを管理するためのスマート ポインター クラスです。 このクラスはテンプレート クラスとなっており、ラッパー クラスの種類だけ自動的に型が生成されます。
以下のようにして、明示的に型を生成することも可能です。
例 23.1. 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;
}
|
Copyright (C) 2002 - 2008 Sophia Cradle Incorporated All Rights Reserved. |
![]() ![]() ![]()
|