Бьерн Страуструп.
Язык программирования С++
213
last->next
=
f->next;
return
f;
}
Возможно более гибкое решение, когда slist_handler
- указатель на функцию, а не сама функция. Тогда
вызов
slist_handler("нельзя взять из пустого списка");
будет задаваться так
(*slist_handler)(" нельзя взять из пустого списка");
Как мы уже делали для функции new_handler ($$3.2.6), полезно
завести функцию,
которая поможет
пользователю создавать свои обработчики ошибок:
typedef void (*PFV)(const char*);
PFV set_slist_handler(PFV a)
{
PFV old = slist_handler;
slist_handler = a;
return
old;
}
PFV slist_handler = &default_slist_handler;
Особые ситуации, которые обсуждаются в главе 9, не только дают альтернативный
способ обработки
ошибок, но и
способ реализации slist_handler.
Достарыңызбен бөлісу: