63 lines
2.2 KiB
Markdown
63 lines
2.2 KiB
Markdown
# CheckPointer
|
||
|
||
The function returns the type of the object [pointer](/en/docs/basis/types/object_pointers).
|
||
|
||
```
|
||
ENUM_POINTER_TYPE CheckPointer(
|
||
object* anyobject // object pointer
|
||
);
|
||
|
||
```
|
||
|
||
Parameters
|
||
|
||
anyobject
|
||
|
||
[in] Object pointer.
|
||
|
||
Return value
|
||
|
||
Returns a value from the [ENUM_POINTER_TYPE](/en/docs/constants/namedconstants/enum_pointer_type) enumeration.
|
||
|
||
Note
|
||
|
||
An attempt to call an incorrect pointer results in the [critical termination](/en/docs/runtime/errors) of a program. That's why it's necessary to call the CheckPointer function before using a pointer. A pointer can be incorrect in the following cases:
|
||
|
||
- the pointer is equal to [NULL](/en/docs/basis/types/void);
|
||
- the object has been deleted using the [delete](/en/docs/basis/operators/deleteoperator) operator.
|
||
|
||
This function can be used for checking pointer validity. A non-zero value warranties that the pointer can be used for accessing.
|
||
|
||
To quickly validate the pointer, you can also use operator "!" ([example](/en/docs/basis/types/object_pointers#lnot)) which checks it via an implicit call of the [CheckPointer](/en/docs/common/checkpointer) function.
|
||
|
||
Example:
|
||
|
||
```
|
||
//+------------------------------------------------------------------+
|
||
//| Deletes list by deleting its elements |
|
||
//+------------------------------------------------------------------+
|
||
void CMyList::Destroy()
|
||
{
|
||
//--- service pointer for working in the loop
|
||
CItem* item;
|
||
//--- go through loop and try to delete dynamic pointers
|
||
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");
|
||
}
|
||
//---
|
||
}
|
||
|
||
```
|
||
|
||
See also
|
||
|
||
[Object Pointers](/en/docs/basis/types/object_pointers), [Checking the Object Pointer](/en/docs/constants/namedconstants/enum_pointer_type), [Object Delete Operator delete](/en/docs/basis/operators/deleteoperator)
|