Я наткнулся на этот код, и я совершенно не понимаю, как он компилируется, поскольку одна из функций из A ссылается на статическую B. А также то, что она должна делать.
где В происходит от А.
В файле A.h
static A* instance();
in B.h
static B* instance() { return dynamic_cast<B*>(A::instance()); }
в B.cpp
A* A::instance()
{
static B s_instance;
return &s_instance;
}
Определения классов и тому подобное были опущены, чтобы облегчить код.