我偶然发现了这段代码,我很困惑它是如何编译的,因为A中的一个函数指的是静态B.这也是它的假设。
其中B来自A。
在A.h文件中
static A* instance();
在B.h
static B* instance() { return dynamic_cast<B*>(A::instance()); }
在B.cpp
A* A::instance()
{
static B s_instance;
return &s_instance;
}
省略了类定义等,以减轻代码。
答案 0 :(得分:1)
A::instance()
为您提供指向A*
的{{1}}。始终相同B
。B
为您提供B::instance()
,A::instance()
编辑为dynamic_cast
的结果。没有理由导致编译失败(除了B*
和A
的定义缺失,即)。