TNB Library
公開メンバ関数 | 全メンバ一覧
CPointerHandleT< TYP > クラステンプレート

ポインタ型ハンドルテンプレート [詳解]

#include <TnbPointerHandle.h>

+ CPointerHandleT< TYP > の継承関係図

公開メンバ関数

 CPointerHandleT (const CPointerHandleT &t)
 コピーコンストラクタ. [詳解]
 
 CPointerHandleT (TYP *P)
 代入コンストラクタ. [詳解]
 
 CPointerHandleT (void)
 コンストラクタ. [詳解]
 
int GetReferCount (void) const
 [取得] 参照数取得. [詳解]
 
bool IsNull (void) const
 [確認] NULLチェック [詳解]
 
void Null (void)
 [設定] 開放. [詳解]
 
 operator const TYP * (void) const
 [取得] TYP取得. [詳解]
 
 operator TYP * (void)
 [取得] TYP取得. [詳解]
 
bool operator!= (TYP * t) const
 [比較] TYP比較. [詳解]
 
TYP & operator* (void)
 [取得] TYPポインタ取得. [詳解]
 
const TYP & operator* (void) const
 [取得] TYPポインタ取得. [詳解]
 
TYP * operator-> (void)
 [取得] TYP取得. [詳解]
 
const TYP * operator-> (void) const
 [取得] TYP取得. [詳解]
 
bool operator== (TYP * t) const
 [比較] TYP比較. [詳解]
 
TYP * * ReferP (void)
 [取得] TYPのポインタ取得. [詳解]
 
TYP * const * ReferP (void) const
 [取得] TYPのポインタ取得. [詳解]
 
int SetReferCount (int iCount)
 [設定] 参照数設定 [詳解]
 

詳解

template<typename TYP>
class TNB::CPointerHandleT< TYP >

ポインタ型ハンドルテンプレート

この型に new で確保したポインタを渡しておくと、
「領域」を参照する本クラスががなくなり次第、
自動的に開放します。

「Javaの参照型」や「C++/CLRのハンドル型」と
同じ使い方が可能になります。

コピーオペレータを持っているので、関数の戻り値などに
も使用できます。
覚え書き
推奨prefixは「hp」です。
引数
TYP保持する型
必要ファイル
TnbPointerHandle.h
日付
04/11/02 新規作成
06/04/24 テンプレート化
06/05/18 スレッドセーブ化
06/05/20 ReferP()、追加。
06/09/05 Empty -> Null()に変更。New()、追加。
06/09/29 ベースクラスから作成するように変更。

TnbPointerHandle.h347 行目に定義があります。

構築子と解体子

◆ CPointerHandleT() [1/3]

CPointerHandleT ( void  )

コンストラクタ.

TYPポインタを管理していないインスタンスが作成されます。

TnbPointerHandle.h357 行目に定義があります。

◆ CPointerHandleT() [2/3]

CPointerHandleT ( TYP *  P)

代入コンストラクタ.

指定されたTYPポインタを管理するインスタンスが作成されます。 この時点では、TYPポインタは新インスタンスだけが参照しています。

引数
Pnew で確保したTYPポインタ。

TnbPointerHandle.h367 行目に定義があります。

◆ CPointerHandleT() [3/3]

CPointerHandleT ( const CPointerHandleT< TYP > &  t)

コピーコンストラクタ.

コピー元にTYPポインタがある場合、新規作成の本インスタンスでも、 そこを参照するようになります。

引数
t同じ型のインスタンス。

TnbPointerHandle.h377 行目に定義があります。

関数詳解

◆ GetReferCount()

int GetReferCount ( void  ) const
inherited

[取得] 参照数取得.

TYPポインタが参照されている数を知ることが出来ます。

覚え書き
通常使う必要は有りません。
戻り値
参照数

TnbPointerHandle.h221 行目に定義があります。

◆ IsNull()

bool IsNull ( void  ) const
inherited

[確認] NULLチェック

戻り値
trueTYPポインタ無し
falseTYPポインタ有り

TnbPointerHandle.h197 行目に定義があります。

◆ Null()

void Null ( void  )
inherited

[設定] 開放.

本インスタンスが管理しているTYPを開放します。

覚え書き
operator=(NUL) と同じ動作です。
TYPが他からも使われていたら、参照を一つ減らすだけです。

TnbPointerHandle.h229 行目に定義があります。

◆ operator const TYP *()

operator const TYP * ( void  ) const
inherited

[取得] TYP取得.

管理しているTYPを返します

戻り値
TYP の値

TnbPointerHandle.h262 行目に定義があります。

◆ operator TYP *()

operator TYP * ( void  )
inherited

[取得] TYP取得.

管理しているTYPを返します

戻り値
TYP の値

TnbPointerHandle.h255 行目に定義があります。

◆ operator!=()

bool operator!= ( TYP *  t) const
inherited

[比較] TYP比較.

保持している TYPと比較します。

引数
t比較対照
戻り値
false同じ
true異なる

TnbPointerHandle.h294 行目に定義があります。

◆ operator*() [1/2]

TYP & operator* ( void  )

[取得] TYPポインタ取得.

管理しているTYPポインタを返します

戻り値
NUL管理していない
NUL以外TYPポインタ

TnbPointerHandle.h387 行目に定義があります。

◆ operator*() [2/2]

const TYP & operator* ( void  ) const

[取得] TYPポインタ取得.

管理しているTYPポインタを返します

戻り値
NUL管理していない
NUL以外TYPポインタ

TnbPointerHandle.h395 行目に定義があります。

◆ operator->() [1/2]

TYP * operator-> ( void  )
inherited

[取得] TYP取得.

管理しているTYPを返します

戻り値
TYP の値

TnbPointerHandle.h269 行目に定義があります。

◆ operator->() [2/2]

const TYP * operator-> ( void  ) const
inherited

[取得] TYP取得.

管理しているTYPを返します

戻り値
TYP の値

TnbPointerHandle.h276 行目に定義があります。

◆ operator==()

bool operator== ( TYP *  t) const
inherited

[比較] TYP比較.

保持している TYPと比較します。

引数
t比較対照
戻り値
true同じ
false異なる

TnbPointerHandle.h285 行目に定義があります。

◆ ReferP() [1/2]

TYP * * ReferP ( void  )
inherited

[取得] TYPのポインタ取得.

戻り値
TYPのポインタ

TnbPointerHandle.h242 行目に定義があります。

◆ ReferP() [2/2]

TYP * const * ReferP ( void  ) const
inherited

[取得] TYPのポインタ取得.

戻り値
TYPのポインタ

TnbPointerHandle.h248 行目に定義があります。

◆ SetReferCount()

int SetReferCount ( int  iCount)
inherited

[設定] 参照数設定

覚え書き
通常使う必要は有りません。例外として、0以下の参照数は、参照を増やすことが 出来ない様になっているため、意図的に使用することが出来ます。
引数
iCount設定する参照数
戻り値
設定前の参照数

TnbPointerHandle.h209 行目に定義があります。