TNB Library
クラス | 公開メンバ関数 | 限定公開変数類 | 全メンバ一覧
CUnion クラス

UNION管理クラス [詳解]

#include <TnbUnion.h>

+ CUnion の継承関係図

クラス

struct  IFuncBase
 UNION管理クラス用ファンクションインターフェース [詳解]
 

公開メンバ関数

 CUnion (const CUnion &other)
 コピーコンストラクタ. [詳解]
 
template<typename T >
 CUnion (const T &t, DWORD dwParam=0)
 コンストラクタ. [詳解]
 
 CUnion (void)
 コンストラクタ. [詳解]
 
void Empty (void)
 [設定] 空化. [詳解]
 
template<typename T >
bool Get (T &_t) const
 [取得] 取得. [詳解]
 
DWORD GetParam (void) const
 [取得] パラメータ取得. [詳解]
 
LPCSTR GetTypeName (void) const
 [取得] 型名取得. [詳解]
 
CUnionoperator= (const CUnion &other)
 [代入] コピーオペレータ. [詳解]
 
template<typename T >
const T & Ref (T *P) const
 [取得] 参照取得. [詳解]
 
template<typename T >
void Set (const T &t, DWORD dwParam=0)
 [設定] 代入. [詳解]
 
 ~CUnion (void)
 デストラクタ [詳解]
 

限定公開変数類

CPointerHandleT< THead > m_hpHead
 実体参照ハンドル [詳解]
 

詳解

UNION管理クラス

Set() メソッドにより、どんな型の値でも格納しておくことが出来ます。
Get() メソッドで取り出す時は、 Set() した時と同じ型である必要があります。
覚え書き
インスタンスを複製しても、型の実態は一つなので、変更すると、複製した インスタンス、全部に影響があります。
使用例
int i = 99;
CStr s = "A";
CString ss ="X";
CUnion u(i);
CUnion u2(u);
TRACE1("%s\n", u.GetTypeName());
TRACE1("%s\n", u2.GetTypeName());
u.Set(ss);
TRACE1("%s\n", u.GetTypeName());
u.Set(s);
u.Set(s);
VERIFY( u.Get(s) );
VERIFY( ! u2.Get(s) );
TRACE1("%s\n", u.GetTypeName());
TRACE1("%s\n", u2.GetTypeName());
TRACE1("%d\n", u.Ref((CStr*)0).GetLength());
TRACE1("%s\n", u.Ref((CStr*)0));
TRACE1("%d\n", u2.Ref((int*)0));
u.Set(i);
u.Get(i);
TRACE1("%s\n", u.GetTypeName());
TRACE1("%s\n", u2.GetTypeName());
CUnion(void)
コンストラクタ.
Definition: TnbUnion.h:85
TNB::CStrT< TCHAR > CStr
文字列クラス
Definition: TnbStr.h:1785
必要ファイル
TnbUnion.h
日付
06/09/25 新規
07/01/25 Releaseビルドの場合、型判定をサイズのみにした。
07/02/28 ToString のIFを用意。

TnbUnion.h64 行目に定義があります。

構築子と解体子

◆ CUnion() [1/3]

CUnion ( void  )

コンストラクタ.

何も保持しないインスタンス作成。

TnbUnion.h85 行目に定義があります。

◆ CUnion() [2/3]

CUnion ( const T &  t,
DWORD  dwParam = 0 
)

コンストラクタ.

T 型で t の値を持つインスタンス作成。

覚え書き
T 型はコピー機能が必要です。
引数
t代入値
dwParamパラメータ

TnbUnion.h97 行目に定義があります。

◆ CUnion() [3/3]

CUnion ( const CUnion other)

コピーコンストラクタ.

引数
otherコピー元

TnbUnion.h106 行目に定義があります。

◆ ~CUnion()

~CUnion ( void  )

デストラクタ

TnbUnion.h111 行目に定義があります。

関数詳解

◆ Empty()

void Empty ( void  )

[設定] 空化.

何も保持しないインスタンス化

TnbUnion.h131 行目に定義があります。

◆ Get()

bool Get ( T &  _t) const

[取得] 取得.

T 型で t の値を持つインスタンスから、値を得ます。。

覚え書き
T 型は、代入コンストラクト / Set() した時と同じ型である必要があります。
引数
[out]_t取得オブジェクト
戻り値
true成功
false失敗(型が異なる)

TnbUnion.h170 行目に定義があります。

◆ GetParam()

DWORD GetParam ( void  ) const

[取得] パラメータ取得.

戻り値
パラメータ

TnbUnion.h156 行目に定義があります。

◆ GetTypeName()

LPCSTR GetTypeName ( void  ) const

[取得] 型名取得.

覚え書き
DEBUG ビルドの時のみ有効です。
戻り値
インスタンスが保持している型名を返します。

TnbUnion.h215 行目に定義があります。

◆ operator=()

CUnion & operator= ( const CUnion other)

[代入] コピーオペレータ.

引数
otherコピー元
戻り値
自分の参照

TnbUnion.h121 行目に定義があります。

◆ Ref()

const T & Ref ( T *  P) const

[取得] 参照取得.

T 型で t の値を持つインスタンスの持つ値の参照を得ます。。

覚え書き
T 型は、代入コンストラクト / Put() した時と同じ型である必要があります。
引数
P取得したい型のポインタを指定してください(アクセスしないのでNULLで構いません)。
例外
CNoSuchTypeExceptionインスタンスが持つ型と T 型が異なる場合、スローされます。
戻り値
参照

TnbUnion.h195 行目に定義があります。

◆ Set()

void Set ( const T &  t,
DWORD  dwParam = 0 
)

[設定] 代入.

T 型で t の値を持つインスタンスになります。

覚え書き
T 型はコピー機能が必要です。
注意
同じ型で代入してもメモリの再確保が発生します。 本クラスをワークとしては使用しないほうが良いです。
引数
t代入値
dwParamパラメータ

TnbUnion.h146 行目に定義があります。

メンバ詳解

◆ m_hpHead

CPointerHandleT<THead> m_hpHead
protected

実体参照ハンドル

TnbUnion.h278 行目に定義があります。