CheckPointer

A função retorna o tipo do ponteiro de objeto.

ENUM_POINTER_TYPE  CheckPointer(
   objectanyobject      // ponteiro de objeto
   );

Parâmetros

anyobject

[in]  Ponteiro de objeto.

Valor de retorno

Retorna um valor da enumeração ENUM_POINTER_TYPE.

Observação

Uma tentativa de chamar um ponteiro incorreto resulta na finalização crítica de um programa. É por isso que é necessário chamar a função CheckPointer antes de usar um ponteiro. Um ponteiro pode estar incorreto nos seguintes casos:

  • o ponteiro é igual a NULL;
  • o objeto foi excluído usando o operador delete.

Esta função pode ser usada para checar a validade do ponteiro. Um valor não zero garante que o ponteiro pode ser usado para acesso.

Para uma verificação rápida, você também pode usar o operador "!"(exemplo) que testa sua validade por meio de uma chamada de função implícita CheckPointer.

Exemplo:

//+------------------------------------------------------------------+
//| Exclui lista através da exclusão de seus elementos               |
//+------------------------------------------------------------------+
void CMyList::Destroy()
  {
//--- ponteiro de serviço para trabalhar no loop
   CItem* item;
//--- percorre pelo loop e tenta excluir ponteiros 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()," para ser excluído");
         delete (item);
        }
      else Print("Objeto não-dinâmico ",item.Identifier()," cannot be deleted");
     }
//---
  }

Também Veja

Ponteiros de Objetos, Verificação do Ponteiro de Objeto, Exclusão de Objeto Operador delete