GetPointer
オブジェクトの
ポインタを返します。
関数書式:
void* GetPointer(
any_class anyobject
);
■引数
引数名 |
初期値 |
I/O |
詳細 |
anyobject |
- |
In |
classオブジェクト
|
■戻り値
オブジェクトのポインタを返します。
■備考
クラスオブジェクトのみポインタを持っています。
構造体のインスタンスやシンプルな型の変数はポインタを持つ事が出来ません。
new演算子を使用せずに作成された
クラスオブジェクト(例えばオブジェクト配列で自動的に作成された)は、
またポインタを持っていません。
このポインタは自動的に
POINTER_AUTOMATICタイプになります、その為
delete()演算子で削除する事は出来ません。
それ以外は、
POINTER_AUTOMATICタイプのポインタは動的なポインタと変わりありません。
シンプルな型の変数と構造体の変数はポインタを持っていませんので、
GetPointer()関数を適する事は出来ません。
関数の引数にポインタを渡す事も出来ません。
全てのケースにおいてコンパイラはエラーを通知します。
不正なポインタを呼び出すとプログラムは致命的なエラーを引き起こします。
だからこそ、
CheckPointer()関数はポインタを使用する前に呼び出す必要があります。
次のような場合が不正ポインタです。
・ポインタが
NULL ・オブジェクトが
delete演算子によって既に削除されている
この関数は、ポインタの有効性を確認する為に使用する事が出来ます。
ポインタの値がゼロ以外の場合は、アクセス可能なポインタです。
サンプルソース:
#property strict
class CItem{
};
void OnInit(){
CItem* temp_ret;
CItem* temp_class;
CItem temp_class_darray[2];
temp_class = new CItem;
temp_ret = GetPointer(temp_class);
Print( "new演算子で作成されたオブジェクト。",
"ポインタ:",temp_ret , " ポインタタイプ:",CheckPointer(temp_ret) );
temp_ret = GetPointer(temp_class_darray[0]);
Print( "動的に作成されたオブジェクト。 ",
"ポインタ:",temp_ret , " ポインタタイプ:",CheckPointer(temp_ret) );
}
結果:
new演算子で作成されたオブジェクト。ポインタ:3 ポインタタイプ:1
動的に作成されたオブジェクト。 ポインタ:1 ポインタタイプ:2