ホーム > デベロッパ > BREW FAQ

BREW FAQ : SophiaFramework

スマート ポインタとは ?

SophiaFramework の スマート ポインタ とは、BREW インターフェイスのラッパー クラスに対して 参照カウントの管理を自動化する C++ のテンプレートです。

BREW API だけを使用した C 言語プログラミングでは、 インターフェイスの参照カウントの増減を自前で管理する必要がありますが、 スマート ポインタを使用すれば、このような煩雑な管理がすべて自動化されます。

[ BREW API のみを使用したコード ]

//
// BREW API だけでインターフェイスを管理する例
//

// リソース ファイルから読み込むビットマップ画像のリソース ID
#define IDB_MY_PICTURE  0x0001

IShell*   shell = app->a.m_pIShell;
IBitmap*  bmp;

// IBitmap インターフェイスを作成します。
// IBitmap インターフェイスの参照カウントが加算されます。
bmp = ISHELL_LoadResBitmap(shell, MYRESOURCE_RES_FILE, IDB_MY_PICTURE);

// IBitmap インターフェイスを利用した処理
・
・
・

// IBitmap インターフェイスを破棄します。
// IBitmap インターフェイスの参照カウントが減算されます。
IBITMAP_Release(bmp);

[SophiaFramework を使用したコード]

//
// ラッパー クラスとスマート ポインタを使用して、
// インターフェイスを管理する例
//

// リソース ファイルから読み込むビットマップ画像のリソース ID
#define IDB_MY_PICTURE  0x0001

SFBShellSmp   shell = SFBShell::GetInstance();
SFBBitmapSmp  bmp;

// SFBBitmap インスタンスを作成します。
// 自動的に SFBBitmap インスタンスの参照カウントが加算されます。
bmp = shell->LoadResBitmap(MYRESOURCE_RES_FILE, IDB_MY_PICTURE);

// SFBBitmap インスタンスを利用した処理
・
・
・

// SFBBitmapSmp オブジェクトの解放時に
// 自動的に SFBBitmap インスタンスの参照カウントが減算されます。