CheckPointer

La funzione restituisce il tipo dell'oggetto pointer.

ENUM_POINTER_TYPE  CheckPointer(
   objectanyobject      // puntatore oggetto
   );

Parametri

anyobject

[in]  Object pointer.

Return value

Restituisce un valore dall'enumerazione ENUM_POINTER_TYPE.

Nota

Un tentativo di chiamare un puntatore scorretto risulta nella terminazione critica del programma. Ecco perché è necessario chiamare la funzione CheckPointer prima di usare un puntatore. Un puntatore può essere errato nei seguenti casi:

  • il puntatore è uguale a NULL;
  • l'oggetto è stato eliminato con l'operatore delete.

Questa funzione può essere utilizzata per verificare la validità del puntatore. Un valore non-zero garantisce che il puntatore può essere utilizzato per l'accesso.

Per convalidare rapidamente il puntatore, puoi anche utilizzare l'operatore "!" (esempio) che lo verifica tramite una chiamata implicita della funzione CheckPointer.

Esempio:

//+--------------------------------------------------------------------------------+
//| Elimina la lista eliminando i suoi elementi                                    |
//+--------------------------------------------------------------------------------+
void CMyList::Destroy()
  {
//--- servizio puntatore per lavorare nel loop
   CItem* item;
//--- passa attraverso il loop e tenta di eliminare i puntatori dinamici
   while(CheckPointer(m_items)!=POINTER_INVALID)
     {
      item=m_items;
      m_items=m_items.Next();
      if(CheckPointer(item)==POINTER_DYNAMIC)
        {
         Print("Oggetto dinamico ",item.Identifier()," to be deleted");
         delete (item);
        }
      else Print("L' oggetto non-dinamico ",item.Identifier()," non può essere eliminato");
     }
//---
  }

Vedi anche

Object Pointers, Checking the Object Pointer, Object Delete Operator delete