CheckPointer

この関数はオブジェクトポインタの型を返します。

ENUM_POINTER_TYPE  CheckPointer(
  object* anyobject      // オブジェクトポインタ
  );

パラメータ

anyobject

[in]  オブジェクトポインタ

戻り値

ENUM_POINTER_TYPE 列挙のいずれかの値

注意事項

不正なポインタを呼び出す試みはプログラムの緊急終了を生じます。これが、ポインタを使用する前にCheckPointer 関数を呼び出すのが必要な理由です。ポインタは、次のような場合に不正である場合があります。

  • ポインタが NULL
  • オブジェクトが delete 演算子で削除された

この関数は、ポインタの有効性をチェックするために使用することが出来ます。ゼロ以外の値はポインタアクセスを保証します。

ポインタをすばやく検証するにはCheckPointer関数の暗黙的な呼び出しを介してチェックする演算子「!」()も使用できます。

例:

//+------------------------------------------------------------------+
//| 要素の削除によってリストを削除する                                         |
//+------------------------------------------------------------------+
void CMyList::Destroy()
 {
//--- ループの中で作業するためのサービスポインタ
  CItem* item;
//--- ループを通過し、動的なポインタの削除を試みる
  while(CheckPointer(m_items)!=POINTER_INVALID)
    {
     item=m_items;
     m_items=m_items.Next();
    if(CheckPointer(item)==POINTER_DYNAMIC)
       {
        Print("Dynamic object ",item.Identifier()," to be deleted");
        delete (item);
       }
    else Print("Non-dynamic object ",item.Identifier()," cannot be deleted");
    }
//---
 }

参照

オブジェクトポインタオブジェクトポインタのチェックdelete オブジェクト解除演算子