Скачать MetaTrader 5

CheckPointer

Возвращает тип указателя объекта.

ENUM_POINTER_TYPE  CheckPointer(
   objectanyobject      // указатель объекта
   );

Параметры

anyobject

[in]  Указатель объекта.

Возвращаемое значение

Возвращает значение из перечисления ENUM_POINTER_TYPE.

Примечание

Попытка обращения к некорректному указателю приводит к критическому завершению программы. Поэтому существует необходимость использования функции CheckPointer перед использованием указателя. Указатель может быть некорректным в следующих случаях:

  • указатель равен NULL;
  • если объект был уничтожен при помощи оператора delete.

Данную функцию можно использовать как проверку указателя на корректность. Значение, отличное от нуля, гарантирует, что по этому указателю можно получить доступ к данным.

Пример:

//+------------------------------------------------------------------+
//| Уничтожает список через уничтожение элементов                    |
//+------------------------------------------------------------------+
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("Dynamyc object ",item.Identifier()," to be deleted");
         delete (item);
        }
      else Print("Non-dynamic object ",item.Identifier()," cannot be deleted");
     }
//---
  }

Смотри также

Указатели объектов, Проверка указателя объекта, Оператор уничтожения объекта delete