CheckPointer

Devuelve el tipo de puntero a objeto.

ENUM_POINTER_TYPE  CheckPointer(
   objectanyobject      // puntero a objeto
   );

Parámetros

anyobject

[in]  Puntero a objeto.

Valor devuelto

Devuelve el valor de enumeración ENUM_POINTER_TYPE.

Nota

El intento de llamar a un puntero incorrecto lleva a la terminación crítica del programa. Por eso es necesario usar la función CheckPointer antes de usar un puntero. Un puntero puede ser incorrecto en las siguientes ocasiones:

  • el puntero es igual a NULL;
  • si el objeto ha sido eliminado por el operador delete.

Esta función puede ser utilizada para comprobar la validez del puntero. Un valor diferente a cero garantiza que el puntero puede ser utilizado para acceder.

Para comprobar rápidamente el puntero, podemos utilizar también el operador "!"(ejemplo), que comprueba su validez usando una llamada implícita a la función CheckPointer.

Ejemplo:

//+------------------------------------------------------------------+
//| Eliminación de la lista mediante eliminación de sus elementos    |
//+------------------------------------------------------------------+
void CMyList::Destroy()
  {
//--- puntero auxiliar para trabajar en el ciclo
   CItem* item;
//--- pasamos por el ciclo e intentamos eliminar los punteros dinámicos
   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");
     }
//---
  }

Véase también

Punteros a objetos, Comprobación de punteros a objetos, Operador de eliminación de objeto delete