Бьерн Страуструп.
Язык программирования С++
363
Класс, постоянно обращающийся к серверу, может выглядеть так:
class X {
//
...
static void cleanup(void*);
public:
X()
{
cleanup_register.insert(this,&cleanup);
//
...
}
~X() { cleanup(this); }
//
...
};
void X::cleanup(void* pv)
{
X* px = (X*)pv;
cleanup_register.remove(pv);
// очистка
}
Чтобы в
классе Register не иметь дела с типами, мы использовали статическую функцию-член с
указателем типа void*.
Достарыңызбен бөлісу: